Docker 的多階段建構

  • Multi-stage builds 多階段建構,為Docker 17.05板後增加的功能,可以依據不同階段有不同的FROM區段。
  • 提供方便的複製功能,讓你可以輕易地從一個階段,複製到另一個階段,只需要保留最終的image

範例

FROM golang as build-env
ADD . /go/src/app
WORKDIR /go/src/app
RUN go get -u -v github.com/kardianos/govendor
RUN govendor sync
RUN GOOS=linux GOARCH=386 go build -v -o /go/src/app/app-server

FROM alpine
RUN apk add -U tzdata
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
COPY --from=build-env /go/src/app/app-server /usr/local/bin/app-server
EXPOSE 8080
CMD [ "app-server" ]
  • 執行指令
docker build -t cnych/docker-multi-stage-demo:latest . --from=build-env
// 執行到結束
docker build -t cnych/docker-multi-stage-demo:latest .

使用額外的image

COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf