IMT*_*Man 5 docker docker-compose
是否可以在 Docker compose 文件中指定服务的全局设置?
例如,采用以下 Docker Compose 文件:
version: "3.9"
services:
test1:
env_file: /path/to/env/file
image: test
container_name: test1
ports:
- "1234:22"
networks:
- dmz
restart: always
test2:
env_file: /path/to/env/file
image: test
container_name: test2
ports:
- "2345:22"
networks:
- trust
restart: always
networks:
dmz:
driver: bridge
trust:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
我不想对env_file: /path/to/env/file每项服务都适用,而是希望使其适用于所有服务。我知道我可以在命令行中传递它docker-compose,但我希望从 Docker 撰写文件中执行此操作。
尽管 @timsmelik 的答案指出了正确的方向,并展示了如何使用带有标量值的 yaml 锚点和别名,但您可能可以利用合并键 yaml 功能来为您的服务设置可覆盖的默认值。
这是一个例子来说明
version: "3.9"
x-service_defaults: &service_defaults
env_file: /path/to/env/file
image: test
restart: always
services:
test1:
<< : *service_defaults
container_name: test1
ports:
- "1234:22"
networks:
- dmz
test2:
<< : *service_defaults
container_name: test2
ports:
- "2345:22"
networks:
- trust
test3:
<< : *service_defaults
env_file: /some/override/env/file
container_name: test3
volumes:
- /some/bind/dir:/whatever/target
networks:
dmz:
driver: bridge
trust:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
您可以在以下博客文章中找到适用于 docker-compose 文件的所有可能的 yaml 锚点/别名用法的非常全面的解释
小智 4
尝试使用扩展作为片段。
通过扩展字段的支持,Compose 文件可以编写如下,以提高重用片段的可读性:
这是 README.md 中的示例:
x-logging: &default-logging
options:
max-size: "12m"
max-file: "5"
driver: json-file
services:
frontend:
image: awesome/webapp
logging: *default-logging
backend:
image: awesome/database
logging: *default-logging
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |