docker-compose up container start ordering

时间:2016-01-07 04:22:36

标签: docker containers docker-compose devops

既然link已弃用docker-compose.yml(并且我们能够使用新的网络功能在容器之间进行通信),我们就失去了明确定义的方法容器之间的依赖关系。在我们的 api-server 容器启动之前,我们如何告诉我们的 mysql 容器首先出现(通过dns条目{{1}连接到mysql)在myapp_mysql_1

1 个答案:

答案 0 :(得分:3)

有可能使用" volumes_from"作为一种解决方法,直到depends_on功能(下面讨论)被引入。假设您有一个取决于php容器的nginx容器,您可以执行以下操作:

nginx:
  image: nginx
  ports:
    - "42080:80"
  volumes:
    - ./config/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
  volumes_from:
    - php

php:
  build: config/docker/php
  ports:
    - "42022:22"
  volumes:
    - .:/var/www/html
  env_file: config/docker/php/.env.development

mongo:
  image: mongo
  ports:
    - "42017:27017"
  volumes:
    - /var/mongodata/wa-api:/data/db
  command: --smallfiles

上述方法的一个重要注意事项是php的数量暴露给nginx,这是不可取的。但目前这是一个可以使用的特定于docker的解决方法。

depends_on功能这可能是一个未来主义的答案。因为Docker中没有实现该功能(从1.9开始)

  

有人建议引入" depends_on"在新的网络中   Docker引入的功能。但是有一个长期争论   相同的@ https://github.com/docker/compose/issues/374因此,一旦它   实现后,功能depends_on可用于订购   容器启动,但此刻,你将不得不求助于上述方法。