docker-compose up 容器开始排序

Posted

技术标签:

【中文标题】docker-compose up 容器开始排序【英文标题】:docker-compose up container start ordering 【发布时间】:2016-04-11 09:11:07 【问题描述】:

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

【问题讨论】:

【参考方案1】:

在引入 depends_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

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

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

有提议在新网络中引入“depends_on” Docker引入的功能。但是关于 同样的@https://github.com/docker/compose/issues/374 因此,一旦它 已实现,特性 depends_on 可用于订购 容器启动,但目前,您将不得不求助于上述方法。

【讨论】:

以上是关于docker-compose up 容器开始排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在系统启动时运行 docker-compose up -d?

对于nginx容器,docker-compose up失败

如何禁止使用 docker-compose up 重新创建 docker 容器

保持 Redis 数据在 Docker 容器中的 docker-compose down 和 up 之间保持活跃

docker-compose安装

使用`docker-compose run`时无法调试,但`docker-compose up`有效