Ond*_* K. 23 docker docker-compose
是否可以将 docker-compose 文件“导入”或链接到另一个 docker-compose 文件中?
假设我有两个文件:
# docker-compose-1.yml
services:
A:
# config
B:
# config
Run Code Online (Sandbox Code Playgroud)
# docker-compose-2.yml
services:
C:
# config
import: docker-compose-1.yml
Run Code Online (Sandbox Code Playgroud)
通过运行docker-compose -f docker-compose-2.yml up
,我想启动容器 A、B(在导入的文件中指定)和 C。这可能-f
吗,而不必将两个文件与参数链接起来?
Meh*_*ini 20
通过扩展
可以扩展或使用多个 docker-compose 文件及其服务,并将它们链接到一个文件中。您可以查看此链接以了解多个撰写文件的其他用法。但是,如果不按照您提到的将相关文件链接在一起,您还不能包含该文件。
在这里,我定义了一个 common-services.yaml:
version: '2'
services:
nginx_a:
image: nginx:latest
container_name: nginx
ports:
- 81:80
- 1443:443
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个 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
Run Code Online (Sandbox Code Playgroud)
通过 .env 技术
如果你想避免多个文件的链接使用,还有一种使用 .env 文件的技术。我将使用 .env 技术重写前面的示例。
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=common-services.yml:docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
让我们在 common-services.yml 中添加另一个服务作为示例
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=common-services.yml:docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
最后,将它们全部加载到 docker-compose 文件中,甚至不提及这些服务。
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
Run Code Online (Sandbox Code Playgroud)
最后,您将拥有三个正在运行的服务。
Har*_*var 20
Docker Compose 顶级元素include
include
在 Docker Compose 版本2.20及更高版本以及 Docker Desktop 版本4.22及更高版本中可用。
include:
- shared/docker-compose.yaml
- docker-compose.prod.yaml
services:
webapp:
depends_on:
- redis
Run Code Online (Sandbox Code Playgroud)
命令将不提及两个文件作为参数-f
docker compose up -d
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13577 次 |
最近记录: |