Mut*_* PL 2 docker docker-compose
我有一个 docker-compose 文件,它构建 4 个映像并运行 4 个容器,这很好。但在我用来构建 4 个镜像的 4 个 Dockerfile 中,唯一的区别是 cmd. 我只是想知道是否有更好的方法来做到这一点,例如构建一个映像并通过更改 cmd 从该映像运行 4 个容器,
这是我的 docker-compose.yml
version: '3.6'
services:
esg_scoring.insight:
build:
context: .
dockerfile: insight/Dockerfile
esg_scoring.momentum:
build:
context: .
dockerfile: momentum/Dockerfile
esg_scoring.pulse:
build:
context: .
dockerfile: pulse/Dockerfile
esg_scoring.sasb_mapping:
build:
context: .
dockerfile: sasb_mapping/Dockerfile
Run Code Online (Sandbox Code Playgroud)
如果您需要多个容器运行相同的映像,并且仅启动它们的命令不同,那么您绝对应该避免多个 docker 映像,并使用相同的映像。
command
中的指令就是docker-compose
您正在寻找的内容。
此外,您可以使用 YAML 锚点语法来重用代码块并简化代码。
下面是一个拥有 4 个服务的示例,使用相同的映像和不同的命令。您可以将所有常见的参数放在以下default
设置下:
services:
bash:
build: .
command: bash
<<: &default
image: me/my-image
web:
<<: *default
command: bundle exec run server start
setup:
<<: *default
command: bundle exec run db setup
jobs:
<<: *default
command: bundle exec run job runner
Run Code Online (Sandbox Code Playgroud)
这种方法的好处是,它只会在运行时构建一次docker-compose build
,因为build
指令位于default
设置之外。
归档时间: |
|
查看次数: |
3296 次 |
最近记录: |