这个问题在这里已经有答案了:
如何知道docker mysql容器何时启动,mysql何时准备好接受查询(14个答案)
两年前关门了。
我有一个简单的java应用程序,它依赖于mysql。
这就是我的 docker-compose.yaml
看起来像:
version: "3.3"
services:
docker-mysql:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_PASSWORD=root
volumes:
- /var/lib/mysql
ports:
- 3306:3306
my-app:
build: .
depends_on:
- docker-mysql
ports:
- 8080:8080
这是我的 Dockerfile
创建容器化应用程序,即。 my-app
:
FROM openjdk:8
EXPOSE 8080
ADD /target/Service1-0.0.1.jar Service1.jar
ENTRYPOINT ["java","-jar","Service1.jar"]
当我尝试的时候 docker-compose up
,应用程序成功启动tomcat,但无法连接到mysql容器,因为它在应用程序之后启动:
docker撰写日志
2条答案
按热度按时间wnvonmuf1#
医生说得很清楚https://docs.docker.com/compose/startup-order/
depends_on
只会按该顺序启动docker构建,而不会等待构建完成。你需要给你自己的command
这将确保在继续下一个生成之前启动所需的服务。或者您可以跳过docker compose,只需使用bash脚本即可执行docker run
按你想要的顺序。2izufjch2#
通常,它应该出现在db容器之后。结果如何
docker logs docker-mysql_1 --tail 25 -f
把它也贴上。另外,尝试像这样为db容器添加volumes部分