我今天开始学习docker-compose,遇到了以下问题。
version : '2'
services:
myService1:
build: .
image: newimagename
restart: always
ports:
- "13000:13000"
links :
- database1
command: ["./wait-for-it.sh", "172.17.0.1:3306", "--"]
database1:
image: mydatabaseimage
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_USER=somename
- MYSQL_PASSWORD=somepassword
详细信息:
图像mydatabaseimage是根据mariadb图像构建的图像,其中填充了数据库条目。
myService1是从Java项目的现有dockerfile构建的。问题是,为了使dockerfile编译项目,它需要数据库条目。要进行编译,它将尝试从172.17.0.1:3306查询一些信息。
当我运行此docker-compose时,它将运行dockerfile,然后在Java编译期间将失败,表示无法连接到正确的数据库。 (仅当我之前已经在Docker容器中运行了数据库映像时,我才能运行此docker-compose。)
我一直在这里https://docs.docker.com/compose/startup-order/中查看教程,并尝试使用wait-for-it.sh
我想知道我该怎么做,以便首先运行database1映像,直到完成,然后再运行myService1甚至开始运行其dockerfile?
谢谢。
答案 0 :(得分:0)
尝试在depends_on
中设置myService1
。
version: "3"
services:
myService1:
build: .
depends_on: database1