docker等待问题
上次更新: Wednesday, April 23, 2025 9:12 PM
docker中如何让一个服务等待另一个服务成功运行后再启动?
通过如下代码配置mysql的healthycheck
mysql:
container_name: mysql
image:
mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ...
MYSQL_DATABASE: ...
volumes:
- ./volumes/mysql:/var/lib/mysql
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "--host=localhost", "--user=...", "--password=..."]
interval: 30s
timeout: 20s
retries: 3
通过如下代码配置等待mysql正常运行后再启动api服务
api:
container_name: api
build:
context: api
dockerfile: Dockerfile
command: ["sh", "-c", "python -m script.init_sql_base_data && fastapi run main.py --proxy-headers --host 0.0.0.0 --port 8001"]
volumes:
- ./api:/app
depends_on:
mysql:
condition: service_healt
env_file:
- ./api/.env.development
CC BY-NC-SA 4.0