如何为开发和生产(大量)构建镜像:
我试图为两者都使用一个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 运行),然后将二进制文件复制到新容器中?
最佳答案
不要将dev用作名称,而应将其用作标签:
go:dev
go:prod
和您的compose.yml:
services:
go:
image: go:dev
奖励:在“Edit 29/06/17”下查看this answer,并将此构建步骤同时用于(dev和prod)
关于docker - 为开发和生产环境构建容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47633604/