为开发和生产环境建造容器



您如何构建用于开发和生产的图像(群):

我试图拥有一个 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)使用此构建步骤

基本上您应该采取以下选项之一:

  1. 正如蒙克金(Munchkin)在答案中所说的那样,使用标签来区分prod und dev。如果您真的非常需要在容器中确实需要不同的东西,这应该是您的选择。但这通常不应该这样。通常,您总是希望以相同的方式在本地,开发和产品中运行容器 - 这是关于容器的好处!如果在本地工作,它将在Dev和prod中使用:)
  2. 尝试在每个阶段使用完全相同的构建。当然可能存在差异。例如,如果您有数据库,则可能不想使用生产数据库。而是使您的图像可与环境变量相结合,以适合您阶段的不同配置。这是您最大程度地减少不同舞台建造风险的方式!

如果您想进一步阅读有关如何配置docker映像的进一步阅读,则可能需要阅读以下内容:https://dantehranian.wordpress.com/2015/03/03/25/how-should-should-should-i--i----------------------i-------------配置 - ininto-my-docker-containers/

最新更新