【发布时间】:2017-12-04 12:38:26
【问题描述】:
你如何为开发和生产构建镜像(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),然后将二进制文件复制到一个新容器中?
【问题讨论】:
-
我不清楚你的问题是什么。 “命名不起作用”是什么意思?
-
在撰写文件中传递环境变量的方式只会在运行时赋予它该值。如果要在构建过程中更新
ENV,则需要使用ARG和--build-arg
标签: docker docker-compose dockerfile docker-machine