gpt4 book ai didi

docker - 在另一个 compose 文件中导入 docker compose 文件

转载 作者:行者123 更新时间:2023-12-02 06:43:45 31 4
gpt4 key购买 nike

是否可以将 docker-compose 文件“导入”或链接到另一个 docker-compose 文件中?

假设我有两个文件:

# docker-compose-1.yml
services:
A:
# config
B:
# config
# docker-compose-2.yml
services:
C:
# config
import: docker-compose-1.yml

通过运行docker-compose -f docker-compose-2.yml up,我想启动容器A、B(在导入的文件中指定)和C。这是否可能,无需必须使用 -f 参数链接这两个文件?

最佳答案

通过扩展

可以扩展或使用多个 docker-compose 文件及其服务,并将它们链接到一个文件中。您可以看一下this link了解多个撰写文件的其他用法。但是,如果不按照您提到的方式将相关文件链接在一起,您还无法包含该文件。

在这里,我定义了一个common-services.yaml:

version: '2'
services:
nginx_a:
image: nginx:latest
container_name: nginx
ports:
- 81:80
- 1443:443

然后,我创建了一个 docker-compose.yml 并包含 common-services.yml 文件及其自己的服务。

services:
nginx:
extends:
file: common-services.yml
service: nginx_a

nginx_b:
image: nginx:latest
container_name: nginx_b
volumes:
ports:
- 82:80
- 2443:443

通过 .env 技术

如果你想避免多个文件的链接使用,还有 a technique.env 文件。我将使用 .env 技术重写前面的示例。

COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=common-services.yml:docker-compose.yml

让我们在 common-services.yml 中添加另一个服务作为示例

version: '2'
services:
ngin_a:
image: nginx:latest
container_name: nginx_a
ports:
- 81:80
- 1443:443

redis_c:
image: redis:latest
container_name: redis_c
ports:
- 6381:6380

最后,将它们全部加载到 docker-compose 文件中,甚至不提及这些服务。

version: '2'
services:
nginx_b:
image: nginx:latest
container_name: nginx_b
ports:
- 82:80
- 2443:443
env_file:
- .env

最终,您将拥有三个正在运行的服务。

关于docker - 在另一个 compose 文件中导入 docker compose 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55650342/

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