您如何构建用于开发和生产的图像(群):
我试图拥有一个 Dockerfile
,以使" dockerfile实施"保持在一个地方:
FROM golang AS gobase
ENV APP_ENV "pro"
COPY ./app /go/src/github.com/user/myProject/app
WORKDIR /go/src/github.com/user/myProject/app
RUN go get ./
RUN go build
EXPOSE 8080
FROM gobase AS godev
ENV APP_ENV "dev"
RUN go get github.com/pilu/fresh
RUN go-wrapper download
RUN go-wrapper install
CMD [ "fresh" ]
,然后使用docker-compose.dev.yml
&docker-compose.pro.yml
喜欢docker-compose.dev.yml:
version: '2'
services:
godev:
environment:
- APP_ENV="dev"
image: godev
因此,首先,命名不起作用。
奖励问题:如何为生产构建图像 - 您只是在一个容器中编译(Docker Run),然后将二进制文件复制到新容器?
不要将 dev 用作名称,而是 tag :
go:dev
go:prod
和您的compose.yml:
services:
go:
image: go:dev
奖金:在"编辑29/06/17"下查看此答案,并为(dev和prod)使用此构建步骤
基本上您应该采取以下选项之一:
- 正如蒙克金(Munchkin)在答案中所说的那样,使用标签来区分prod und dev。如果您真的非常需要在容器中确实需要不同的东西,这应该是您的选择。但这通常不应该这样。通常,您总是希望以相同的方式在本地,开发和产品中运行容器 - 这是关于容器的好处!如果在本地工作,它将在Dev和prod中使用:)
- 尝试在每个阶段使用完全相同的构建。当然可能存在差异。例如,如果您有数据库,则可能不想使用生产数据库。而是使您的图像可与环境变量相结合,以适合您阶段的不同配置。这是您最大程度地减少不同舞台建造风险的方式!
如果您想进一步阅读有关如何配置docker映像的进一步阅读,则可能需要阅读以下内容:https://dantehranian.wordpress.com/2015/03/03/25/how-should-should-should-i--i----------------------i-------------配置 - ininto-my-docker-containers/