我有 2 個 Dockerfile,1 個用于開發,1 個用于生產:產品:FROM golang AS builderWORKDIR /go/src/gitlab.com/company/projectCOPY . .RUN go build -o ./release/api .FROM scratchEXPOSE 9999COPY --from=builder /go/src/gitlab.com/company/project/release/api .CMD ["./api"]和開發:FROM golangWORKDIR /go/src/gitlab.com/company/PROJECTCOPY . .RUN go build -o ./release/api .CMD ["./release/api"]我想將這兩個合并為一個,因為維護 2 個 Dockerfile 是一種不好的做法主要區別在于,在 dev 中,我使用golang實用的圖像,而在 prod 中,我使用scratch圖像,這大大減少了我的二進制文件的大小。似乎我可以在 Dockerfile 中使用多個階段,并在構建時指定階段名稱:docker build . --target=builder但是如果我這樣做,我不知道如何在第一階段有條件地運行我的應用程序 = [如果我在開發中,則在第一階段運行該應用程序,否則,在第二階段運行該應用程序]我應該怎么做?
如何為開發和生產使用相同的 dockerfile
慕無忌1623718
2023-06-19 14:07:26