我有一个经典的PHP 7 / MySQL / Nginx API,我想通过dockerise
事情是当我运行docker compose时,应用程序在db准备就绪之前启动了,所以失败了:
version: '3.3'
services:
db:
image: mysql:5.7
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: jaumo
MYSQL_USER: root
MYSQL_PASSWORD: password
app:
image: repo/myimage
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
MYSQL_USER: root
MYSQL_PASSWORD: password
ports:
- 8000:80
depends_on:
- "db"
volumes:
db_data:
official doc指出:
depends_on在启动Web之前不会等待db和Redis处于“就绪”状态-仅在它们启动之前。如果需要等待服务就绪,请参阅控制启动顺序以获取有关此问题的更多信息以及解决方案。
版本3不再支持depends_on的条件形式。
所以基本上,在版本2中,我可以添加heathcheck条件,这很容易,但是现在,我不知道该怎么做,而且文档也没有提供任何替换方法。
我该怎么办?这是一个很常见的情况...
答案 0 :(得分:0)
我在之前的一些回答中详细介绍了该过程,因为需要一些解释。这是ref。基本上,您编写一个wait-for-it
脚本,等待http响应-然后只有postgres / oracle / mysql之类的数据库才可以工作。