docker-compose问题与开始顺序

时间:2018-07-19 00:38:31

标签: docker docker-compose

我今天开始学习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?

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试在depends_on中设置myService1

version: "3"
services:
    myService1:
       build: .
       depends_on: database1