Каждый отдельный контейнер, который вы объявляете в файле docker-compose.yml
, может иметь отдельный блок build:
. Это может объявить отдельный dockerfile:
для каждого изображения. В контексте пакета Go вам, вероятно, потребуется всегда включать в пакет весь пакет, в частности, файл go.mod
в хранилище root.
Так что, если ваш макет каталога выглядит так:
myapp
+-- docker-compose.yml
+-- Dockerfile.A
+-- Dockerfile.B
+-- go.mod
+-- go.sum
\-- cmd
+-- A
| \-- main.go
\-- B
\-- main.go
Тогда вы можете указать свой файл docker-compose.yml
на оба Dockerfiles:
version: '3'
services:
version-a:
build:
context: .
dockerfile: Dockerfile.A
version-b:
build:
context: .
dockerfile: Dockerfile.B
Если у вас есть один Dockerfile
, который собирает и устанавливает обе версии пакет, вы также можете переопределить command:
для каждого контейнера, в соответствии с директивой Dockerfile CMD
:
version: '3'
services:
version-a:
build: .
command: A
version-b:
build: .
command: B