golang學習總結(四)-程序編譯

最近開發了一個小程序,到了部署階段,學習了部署的步驟,總結如下:

  • 下載基礎鏡像

golang編譯使用的基礎鏡像有以下三種:

1.golang:onbuild

構建簡單,包含編譯是的所有運行環境,但體積較大
Dockerfile配置如下:
FROM golang:onbuild
EXPOSE 8080

2.golang:alpine

構建複雜, 需執行編譯動作,體積小
Dockerfile配置如下:
FROM golang:alpine
WORKDIR /app
ADD . /app
RUN cd /app && go build -o goapp
EXPOSE 8080
ENTRYPOINT ./goapp

3.golang:alpine AS build-env

構建複雜,體積更小,攜帶工具少,安全性更高(推薦)
Dockerfile配置如下:
FROM golang:alpine AS build-env
WORKDIR /app
ADD . /app
RUN cd /app && go build -o goapp

FROM alpine
RUN apk update && \
   apk add ca-certificates && \
   update-ca-certificates && \
   rm -rf /var/cache/apk/*
WORKDIR /app
COPY --from=build-env /app/goapp /app
EXPOSE 8080
ENTRYPOINT ./goapp
  • 對基礎鏡像打tag,上傳至私有鏡像倉庫(方便後面編譯的時候直接調用私有鏡像倉庫鏡像)

docker dag imageID 私有鏡像地址/golang:onbuild   --爲鏡像打tag

docker login 私有鏡像地址  --登錄私有鏡像,此處有兩點需要注意,

一是要在daemon.json文件中添加insecure-registries,注意格式要正確,然後重啓docker,如果啓動報錯,請檢查/etc/systemconfig/docker(參考https://www.cnblogs.com/John5/p/docker.html);

{
"insecure-registries":["私有鏡像地址"]
}
二是網絡連接超時,我在hosts添加了域名解析後OK;

登陸成功後執行push語句,將鏡像上傳到鏡像倉庫

docker push 私有鏡像地址/golang:onbuild

  • 修改Dockerfile

進入golang開發的項目文件根目錄,找到Dockerfile,修改參照如下

FROM 私有鏡像地址/golang:onbuild
MAINTAINER 維護者名字
EXPOSE 3333
  • 執行編譯

這裏我將項目文件所在目錄掛載到docker虛機上,切換到項目文件根目錄,執行docker build -f Dockerfile . (記錄,最後這個點千萬別忘了,這代表當前目錄),然後執行docker images,你看到已經生成新的鏡像文件,拿着這個鏡像文件去部署就OK了。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章