docker-compose up container start ordering

blo*_*loo 5 containers docker docker-compose devops

现在link已经弃用了docker-compose.yml(并且我们能够使用新的网络功能在容器之间进行通信),我们已经失去了一种明确定义容器之间依赖关系的方法.我们如何才能,现在,告诉我们的MySQL的容器拿出第一,我们之前的API服务器容器启动时(其通过DNS条目连接到MySQL myapp_mysql_1docker-compose.yml

Pha*_*ani 3

在引入 dependent_on 功能(如下所述)之前,可以使用“volumes_from”作为解决方法。假设您有一个依赖于 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
Run Code Online (Sandbox Code Playgroud)

上述方法的一个重要警告是 php 的卷暴露给 nginx,这是不希望的。但目前这是一种可以使用的 docker 特定解决方法。

depends_on feature这可能是一个未来主义的答案。因为该功能尚未在 Docker 中实现(截至 1.9)

有人提议在 Docker 引入的新网络功能中引入“depends_on”。但对于同样的问题存在长期争论@ https://github.com/docker/compose/issues/374因此,一旦实现,该功能depends_on可用于命令容器启动,但在到了这个时候,你就不得不采用上面的方法了。