Docker 为开发人员和生产环境构建容器
您如何为开发和生产建立形象(swarm): 我正试图为两者都提供一个Docker 为开发人员和生产环境构建容器,docker,docker-compose,dockerfile,docker-machine,Docker,Docker Compose,Dockerfile,Docker Machine,您如何为开发和生产建立形象(swarm): 我正试图为两者都提供一个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
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用作名称,而是作为标记:
还有你的compose.yml:
services:
go:
image: go:dev
额外好处:查看“编辑29/06/17”下的内容,并将此构建步骤同时用于(开发人员和产品)不要将开发人员用作名称,而是用作标记:
还有你的compose.yml:
services:
go:
image: go:dev
奖励:查看“编辑29/06/17”下的内容,并将此构建步骤同时用于(开发和生产)基本上,您应该选择以下选项之一:
如果您想进一步了解如何配置docker映像,您可能需要阅读以下内容:基本上,您应该选择以下选项之一:
如果您想进一步了解如何配置docker映像,您可能需要阅读以下内容:我不清楚您的问题是什么。“命名不起作用”是什么意思?在编写文件中传递环境变量的方式只会在运行时赋予该值。如果您想在生成过程中更新
ENV
,则需要使用ARG
和--build ARG
我不清楚您的问题是什么。“命名不起作用”是什么意思?在编写文件中传递环境变量的方式只会在运行时赋予该值。如果要在生成期间更新ENV
,则需要使用ARG
和--build ARG