我有一个依赖于MySQL的简单java应用程序。
这是我的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撰写日志
发布于 2018-09-30 16:08:58
它在文档https://docs.docker.com/compose/startup-order/中 非常清楚地说明depends_on
只会以该顺序启动docker构建,它不会等待构建完成。您需要提供自己的服务command
,以确保在继续下一个构建之前启动所需的服务。或者你可以跳过docker compose,只需使用docker run
按你想要的顺序执行的bash脚本。
发布于 2018-09-30 17:36:09
通常,它假设在db容器之后出现。docker logs docker-mysql_1 --tail 25 -f
粘贴的结果是什么?
另外,尝试为db容器添加一个卷部分,如下所示
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_PASSWORD=root
volumes:
- /var/lib/mysql
https://stackoverflow.com/questions/-100008894
复制相似问题