1. 程式人生 > 實用技巧 >如何使用docker 部署 golang 編譯環境最小版

如何使用docker 部署 golang 編譯環境最小版

最近 忙著將以前的系統再迭代一下,之不是用go mod 來做的,這次準備把系統改成go module的樣子,以間把整個檔案拷貝到映象裡面執行,所以整個檔案很大,一般都有一個G,感覺不是很理理,最後決定用二次映象的原理來搞一下,直接上程式碼了

#使用最新的golang 映象
FROM golang:1.15.0-alpine3.12 as builder
LABEL maintainer="[email protected]"
#更新Alpine的軟體源為國內源,提高下載速度
RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main/" > /etc/apk/repositories 
#因為 scratch 不帶SSL 證書儲存,所以要安裝更新
RUN apk update && apk add --no-cache git ca-certificates && update-ca-certificates && apk add --no-cache tzdata # Create 執行的帳號 ENV USER=appuser ENV UID=10001 RUN adduser \ --disabled-password \ --gecos "" \ --home "/nonexistent" \ --shell "/sbin/nologin" \ --no-create-home \ --uid
"${UID}" \ "${USER}" # 確定工作環境 WORKDIR /app #將程式碼 拷貝進容器 ADD . /app #進行golang環境的設定,開啟go mod 並設定映象 RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.io,direct # 編譯 映象 RUN CGO_ENABLED=0 GOOS=linux go build -o app # 使用最小的開始 製作映象 FROM scratch as final # 從編譯中匯入映象Import from builder. #匯入時區
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo #匯入ssl 證書 COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ #匯入帳號 COPY --from=builder /etc/passwd /etc/passwd COPY --from=builder /etc/group /etc/group #匯入golang編充好的 COPY --from=builder /app/app . ADD app / CMD ["/app"]

這樣整個docker 環境就製作好了

大概弄後面的映象是44.6M,感覺還不錯,必竟最開始都是1G左右

最後,把部署的也加上

#!/usr/bin/env bash
git pull origin master
docker build -t yxt-platform .

docker stop yxt-platform-test
docker rm yxt-platform-test
docker run -d --name yxt-platform-test \
            -p 1323:1323 \
            -v $(pwd)/conf/conf-docker.toml:/conf/conf.toml \
            -v $(pwd)/static:/static \
            -v $(pwd)/cert:/cert \
            --link mysql:192.168.2.3 \
            --link redis:redis \
            yxt-platform

這樣就可以很愉快的玩耍啦!!!!