在Goland中使用Docker插件生成鏡像與創建容器


文章原發於taskhub

1. 在Goland中連接本地或遠程Docker daemon

1.1 在File->Setting->Build->Docker中配置連接地址

Docker為C/S架構,安裝在服務器上的Docker daemon守護程序為server端,我們可使用Goland的Docker插件作為client端訪問daemon.

如果出現connection fail,則可能是daemon的端口未配置正確,需要進行如下配置。

1.2 打開docker daemon的tcp訪問端口

  • 在終端中打開並修改docker的配置文件: sudo vim /lib/systemd/system/docker.service
  • 用#注釋原有的ExecStart,並加入如下配置:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
  • 重新加載守護進程:systemctl daemon-reload
  • 重啟docker服務:systemctl restart docker.service
  • 測試2375端口是否已經開啟:curl http://127.0.0.1:2375/info

1.3 在Goland中查看和使用docker

2. 編譯工程與創建鏡像

2.1 創建Dockerfile

  • goland中無創建Dockerfile的內置選項,直接對項目右鍵New->File,然后輸入Dockerfile即可

2.2 多階段構建Docker鏡像

  • 向創建的空Dockerfile輸入以下信息,並注意調用配置文件時所使用的相對路徑,鏡像執行時,以main.go所在的目錄為工作目錄,路徑的相對關系以其為參考
  • 在多階段構建過程中,使用了多個FROM指令,確保不同階段的生成結果不直接傳遞到下一階段,從而減小Docker鏡像的體積
# 構建:使用golang:1.14版本
FROM golang:1.14 as build

# 容器環境變量添加
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct

# 設置當前工作區
WORKDIR /go/release

# 把全部文件添加到/go/release目錄
ADD . .

# 編譯: 把main.go編譯為可執行的二進制文件, 並命名為app
RUN GOOS=linux CGO_ENABLED=0 GOARCH=amd64 go build -ldflags="-s -w" -installsuffix cgo -o app main.go

# 運行: 使用scratch作為基礎鏡像
FROM scratch as prod

# 在build階段, 復制時區配置到鏡像的/etc/localtime
COPY --from=build /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 在build階段, 復制./app目錄下的可執行二進制文件到當前目錄
COPY --from=build /go/release/app /
# 在build階段, 復制yaml配置文件到當前目錄, 此處需要注意調用該配置文件時使用的相對路徑, main.go在當前目錄下執行
COPY --from=build /go/release/config.yaml /

# 啟動服務
CMD ["/app"]

2.3 Goland配置Dockerfile運行環境

  • 在Edit Configurations中創建dockerfile配置項,然后安裝下圖對鏡像和容器的名稱、宿主機和容器的端口映射進行設置
  • 設置完畢后,點擊界面在右上角的運行按鈕,完成鏡像的構建與容器的安裝,最終將自動運行容器程序

3. 構建

  • 完成dockerfile的配置后,開始執行鏡像打包與容器創建過程,該過程需要耗費一定的時間,詳情如下所示:

  • 至此,完成的鏡像構建與容器創建的全部過程

4. 重新編譯

  • 當項目文件改動時,需要重新構建docker鏡像與容器,此時使用Redeploy即可實現,它將覆蓋原有的舊文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM