【问题标题】:Docker - Docker Compose stop company level services not base servicesDocker - Docker Compose 停止公司级服务而不是基础服务
【发布时间】:2019-11-29 07:04:36
【问题描述】:

我有 redis 和 mongodb 等基础服务,它们将共享同一图像的多个容器。

一旦客户请求新公司,我们将使用新端口为请求的公司创建一个新的 docker-compose 文件,并将 apache 配置为指向新的 Web 端口。

使用基础服务启动 company-1 服务

docker-compose -f docker-compose.base.yml -f docker-compose-company-1.yml up -d

company-2 也是如此

docker-compose -f docker-compose.base.yml -f docker-compose-company-2.yml up -d

这将为基础服务和公司服务创建实例以及为公司传递的配置。

同时关闭 company-1 服务

docker-compose -f docker-compose.base.yml -f docker-compose-company-1.yml down

这也会降低基础服务,但公司 2 需要基础服务

如果我们通过以下命令

docker-compose -f docker-compose-company-1.yml down

抛出错误 错误:服务 'company-1' 有一个未定义的服务 'mongodb-service' 的链接。

docker-compose 能解决我们的问题吗?

如何使用 docker compose down 关闭特定的 copmany 服务而不是基础服务

有关 docker-componse 文件的更多信息

docker-compose.base.yml 服务

  • mongodb 服务
  • redis 服务
  • 通用-crons-服务
  • 网站管理员服务
  • 主服务器服务

docker-compose-company-1.yml 服务

  • web-service-company - Angular APP
  • crons-company-services - 公司的 Cron
  • mongodb-company - 公司级别的 mongodb
  • communicate-with-master - 查看来自主服务的请求
  • company-server-server - 用于 Web api 调用的公司服务器

【问题讨论】:

  • 我没听清楚,为什么不docker-compose -f docker-compose-company-1.yml down
  • @LinPy 我只需要使用 docker-componse 关闭 copmapny 服务,而不是基础服务 docker-compose -f docker-compose.base.yml -f docker-compose-company-1.yml down
  • @LinPy 如果docker-compose -f docker-compose-company-1.yml down 会抛出错误ERROR: Service 'company-1' has a link to service 'mongodb-service' which is undefined.,因为我将服务与company-1.yml 相关联

标签: docker docker-compose devops software-design


【解决方案1】:

你可以使用 docker-compose 中的 extends: 选项来解决这个问题

docker-compose-base.yml

services:
    base:
    image:
    container_name:
    ports:

docker-compose-company.yml

services:
   custom:
    image:
    container_name:
    ports:

使用基地和公司的服务创建一个新的撰写文件

扩展 docker-compose 的选项

docker-compose-base-company.yml

services:
    base:
    extends:
    file: docker-compose-base.yml
    service: base

   custom:
    image:
    container_name:
    ports:

您可以使用 docker-compose-base-company.yml 来运行 base 和 company 的服务

docker-compose -f docker-compose-base-company.yml up.

并使用 docker-compose-company.yml 单独关闭公司服务

docker-compose -f docker-compose-company.yml down

【讨论】:

  • 基础服务会保持活跃吗?我认为docker-compose -f docker-compose.base.yml -f docker-compose-company-1.yml down 相同,只是我们正在扩展文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多