Docker 所依赖的未按适当顺序运行
我有一个小的docker compose文件,它的运行顺序不正确 我需要先启动db(Docker 所依赖的未按适当顺序运行,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有一个小的docker compose文件,它的运行顺序不正确 我需要先启动db(mssql服务),然后再启动python服务-我已经读到了dependens\u on的内容,我已经设置好了它,所以python服务应该是最后一个启动的服务-但它不起作用 它不断地启动ubuntu,然后启动python,因为它需要数据库可用,所以无法工作 version: '3' services: mssql: image: "mcr.microsoft.com/mssql/server:late
mssql
服务),然后再启动python
服务-我已经读到了dependens\u on
的内容,我已经设置好了它,所以python
服务应该是最后一个启动的服务-但它不起作用
它不断地启动ubuntu
,然后启动python
,因为它需要数据库可用,所以无法工作
version: '3'
services:
mssql:
image: "mcr.microsoft.com/mssql/server:latest-ubuntu"
environment:
SA_PASSWORD: "123456"
ACCEPT_EULA: "Y"
ports:
- "1433:1433"
python:
build:
context: ./build
dockerfile: python.dock
env_file:
- .env
volumes:
- .:/home/code
depends_on:
- ubuntu
- mssql
ubuntu:
build:
context: ./build
dockerfile: ubuntu.dock
volumes:
- ./transfer:/home/
ports:
- "60000:22"
有什么想法会导致这种情况吗?来自docker compose
的想法取决于
文档:
使用Dependes_时需要注意以下几点:
dependens_on不等待db和redis在之前“就绪”
启动web-仅在启动之前
这一行表示dependens\u on
不保证依赖服务已准备好为请求提供服务,它保证依赖服务刚刚启动
当我运行
docker compose--build-up
时,我看到它启动ubuntu
,然后它立即启动python
,它甚至没有启动mssql
。。。我遗漏了什么吗?你怎么知道它没有启动mssql?终端上说它在构建ubuntu,然后说它在构建python。我是否混淆了开始顺序和构建顺序?我想是的。这里的要点是,您不能依赖于“depends_on”,它只保证db在服务之前启动,而不是准备好服务请求。您应该编写自定义脚本来检查数据库是否实际就绪。