gpt4 book ai didi

Docker 在覆盖服务时组合孤儿容器

转载 作者:IT老高 更新时间:2023-10-28 21:21:59 25 4
gpt4 key购买 nike

我想要两个 docker-compose 文件,其中一个覆盖另一个。
(动机来自Docker Compose Docs)
用例来自 buildbot 环境。第一个 docker-compose 文件应该定义一个简单的服务。这是一项将被测试的服务。让我们来

version: '2'
services:
service-node:
build:
context: ./res
dockerfile: Dockerfile
image: my/server
env_file: .env

第二个 docker-compose 文件(我们将其命名为 docker-compose.test.yml)覆盖服务节点以添加 buildbot worker 功能,并创建第二个容器,即 buildbot 主节点,这将控制测试机器。让我们来

version: '2'
services:
service-node:
build:
context: ./res
dockerfile: buildbot.worker.Dockerfile
image: my/buildbot-worker
container_name: bb-worker
env_file: ./res/buildbot.worker.env
environment:
- BB_RES_DIR=/var/lib/buildbot
networks:
testlab:
aliases:
- bb-worker
volumes:
- ./vol/bldbot/worker:/home/bldbotworker
depends_on:
- bb-master

bb-master:
build:
context: ./res
dockerfile: buildbot.master.Dockerfile
image: my/buildbot-master
container_name: bb-master
env_file: ./res/buildbot.master.env
environment:
- BB_RES_DIR=/var/lib/buildbot
networks:
- testlab
expose:
- "9989"
volumes:
- ./vol/bldbot/master:/var/lib/buildbot

networks:
testlab:
driver: bridge

一般这种配置有效,即命令

docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d 

构建两个镜像并运行两个容器,但有一个缺点,即命令

docker-compose ps

只显示一项服务,bb-worker。同时

docker ps

两者都显示。
此外,命令

docker-compose down

只停止一项服务,并输出消息/警告Found orphan containers。当然,消息指的是bb-master。

如何覆盖基本的 docker-compose.yml 文件以添加额外的非孤立服务?

最佳答案

您需要运行所有带有标志的 docker-compose 命令,例如:

docker-compose -f docker-compose.yml -f docker-compose.test.yml down

或者,您可以通过将以下内容写入同一文件夹中的 .env 文件来将其设为默认值:

COMPOSE_FILE=docker-compose.yml:docker-compose.test.yml

注意:

在 windows 中你需要使用 ";"作为分隔符 (@louisvno)

关于Docker 在覆盖服务时组合孤儿容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41494612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com