Dan*_*umb 12 docker docker-compose
有没有办法定义一个Docker Compose服务,只有up在你明确请求它时它才会被带来?
也就是说:
docker-compose up
Run Code Online (Sandbox Code Playgroud)
不会启动它,但是
docker-compose up optional_service
Run Code Online (Sandbox Code Playgroud)
将.
iva*_*sim 18
实现此目的的一种方法是在不同的撰写文件中定义可选服务.然后启动可选服务,运行:
$ docker-compose -f docker-compose.yml -f optional-service.yaml up
Run Code Online (Sandbox Code Playgroud)
例如,如果我有一个docker-compose.yaml文件,如下所示:
version: '2.1'
services:
lb:
image: nginx:1.13
db:
image: redis:3.2.9
Run Code Online (Sandbox Code Playgroud)
我可以使用一个看起来如下的可选service.yaml来扩展它:
version: '2.1'
services:
busy:
image: busybox
Run Code Online (Sandbox Code Playgroud)
请注意,两个撰写文件必须使用相同的Compose文件版本.
您可以在Compose 文档中阅读有关它的更多信息.
小智 14
Docker compose 现在支持配置文件,它允许您 a) 默认情况下禁用一个或多个服务,以及 b) 在使用相应--profile参数运行 docker compose 时启用它们。
这是通过profiles在docker-compose.yml文件中为您的服务添加一个密钥来完成的。没有此密钥的服务始终由 docker-compose 启动(对于所有配置文件)。
例如,使用以下 docker-compose.yml 文件
version: '3.9'
services
app_service:
# ...
test_service:
profiles:
- testing
# ...
Run Code Online (Sandbox Code Playgroud)
运行docker-compose up只会启动app_service,而运行docker-compose --profile testing up会同时启动app_service和test_service。
可以通过传递多个--profile标志来指定多个配置文件。
更多信息可以在这里找到:https : //docs.docker.com/compose/profiles/
编辑:我必须更新到 docker 引擎 v20.10.5 才能工作。
Esh*_*an7 12
该extend关键字已在版本中删除3.x。
我遇到了同样的问题,这就是我所做的:
COMPOSE_FILE在.env文件中使用环境变量。docker-compose up,而不是读取。docker-compose.ymlCOMPOSE_FILE例如,
COMPOSE_FILE=docker-compose.yml:./optional/docker-compose.prod.yml
Run Code Online (Sandbox Code Playgroud)
.env文件是自动读取(如果位于同一水平docker-compose.yml),当我们调用docker-compose up。-f在 CLI 中使用标志指定每个文件。注意:
:在 linux 或;windows 的情况下用 a 分隔文件名。
| 归档时间: |
|
| 查看次数: |
3868 次 |
| 最近记录: |