1.FROM
語法的使用
回顧之前專案寫的dockerfile
檔案
FROM golang:latest AS builder
#維護者資訊
# MAINTAINER Dong Lei
# MAINTAINER 2781897595@qq.com
LABEL Dong Lei <2781897595@qq.com>
# 為我們的映象設定必要的環境變數
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64\
GOPROXY="https://goproxy.cn,direct"
# 類似於cd命令 cd 到工作目錄:/build
WORKDIR /build
# 將程式碼複製到容器中 /build目錄
COPY . .
# 將我們的程式碼編譯成二進位制可執行檔案 app
RUN go build -o app .
###################
# 接下來建立一個小映象
###################
FROM scratch
# 從builder映象中把/dist/app 拷貝到當前目錄
COPY ./config /conf
COPY --from=builder /build/app /
# 需要執行的命令
ENTRYPOINT ["/app","/conf"]
第一句就是FROM golang:latest
, 它的意思是選擇一個基礎映象,我這裡選擇的是golang
系統的最新版。
幾乎所有的Dockerfile檔案,要做的第一件事就是要選擇一個基礎映象。但可能出乎意料,上面的這句FROM golang:latest
並不是一個最優寫法。
先來看有選擇映象的三個基本原則。
官方映象優於非官方的映象;
固定版本的Tag,而不是每次都使用latest;
功能滿足,選擇體積小的映象;
拿
Golang
映象為例,有些是帶alpine
環境的,有些是不帶的。他們的映象體積大小相差 一半。這個原則不好把握,需要些經驗。前提是滿足你需求的情況下,所以這就要對映象有充分的瞭解,然後再根據需求選擇小的。(
alpine (Alpine Linux
)是一款獨立的非商業性的通用Linux發行版、關注安全性、簡單性和資源效率。它小巧的特點受廣大IT人士的喜愛。)
注意這是基礎映象,在這個基礎上,你還會加入很多自己的東西和應用。當你再次build時,映象體積就會很大,越大的映象,代表複雜度越高。所以讓自己的映象變的簡潔,是我們的責任。
本作品採用《CC 協議》,轉載必須註明作者和本文連結