У меня есть 2 Dockerfile, 1 для разработчика и 1 для продукта:
PROD:
FROM golang AS builder
WORKDIR /go/src/gitlab.com/company/project
COPY . .
RUN go build -o ./release/api .
FROM scratch
EXPOSE 9999
COPY --from=builder /go/src/gitlab.com/company/project/release/api .
CMD ["./api"]
и DEV:
FROM golang
WORKDIR /go/src/gitlab.com/company/PROJECT
COPY . .
RUN go build -o ./release/api .
CMD ["./release/api"]
Я хотел бы объединить эти два в один, так как поддержание 2 Dockerfile - это плохая практика
Основное отличие состоит в том, что в dev я работаю с golang
image, что практично, а в prod я работаю с scratch
image, что значительно уменьшает размер моего двоичного файла.
Кажется, что я могу использовать несколько этапов в Dockerfile и указывать имя этапа во время сборки:
docker build . --target=builder
Но если я сделаю это, я не знаю, как условно запустить мое приложение на первом этапе = [Если я в dev, запустите приложение на первом этапе, в противном случае запустите приложение на втором этапе]
Как мне это сделать?