如何为开发和生产(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
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)中编译,然后将二进制文件复制到新容器中吗?
答案 0 :(得分:3)
不要将 dev 用作名称,而应使用标记:
go:dev
go:prod
和你的compose.yml:
services:
go:
image: go:dev
奖励:在“编辑29/06/17”下查看this answer,并为(dev和prod)使用此构建步骤
答案 1 :(得分:0)
基本上你应该选择以下选项之一:
如果您想进一步了解如何配置泊坞窗图像,可能需要阅读:https://dantehranian.wordpress.com/2015/03/25/how-should-i-get-application-configuration-into-my-docker-containers/