1. 程式人生 > >Docker Multi-stage Build

Docker Multi-stage Build

傳統構建

構造Dockerfile的時候,之前經常使用多個Dockerfile來構造目標映象,比如先構造一個基礎環境映象,再在第二個映象裡面FROM基礎環境映象:

##Dockerfile.base
FROM alpine:3.7
···
···
···
// compile your code to executeable.
sudo docker build -t "base:0.1" .
## Dockerfile.target
// 複製剛才的可執行檔案到目標映象裡面
...
...
...

這樣很麻煩並且容易出錯。

多階段構造

Docker 17.05ce 之後,出現了Multi-stage builds,解決了上面的問題。

使用FROM ... AS ...語句
FROM golang:alpine AS builder
這一句就可以建立一個臨時的builder映象,並且還是像原來的Dockerfile命令一樣操作這個容器。
FROM alpine
COPY --from=builder ....
這條COPY命令就可以從剛才臨時構建的映象裡面把編譯好的可執行檔案拷貝到目標映象裡面,從而不用先建立一個image再COPY可執行檔案到目標映象