500行程式碼手寫docker開篇-goland遠端編譯環境配置

藍胖子的程式設計夢發表於2023-05-18

(1)500行程式碼手寫docker開篇-goland遠端編譯環境配置

本系列教程主要是為了弄清楚容器化的原理,紙上得來終覺淺,絕知此事要躬行,理論始終不及動手實踐來的深刻,所以這個系列會用go語言實現一個類似docker的容器化功能,最終能夠容器化的執行一個程式。

本系列原始碼已經上傳到githuhub,地址如下:

https://github.com/HobbyBear/tinydocker

在開始寫程式碼之前,先介紹下我的實驗環境,本地開發環境是arm64 mac m1,為了能方便的在linux上進行除錯,我買了一個amd64的雲linux 伺服器,其實也可以本地搭建一個linux虛擬機器代。 程式碼編輯器選擇了goland,並在goland配置了遠端編譯,這樣便能在本地編寫除錯 適合amd64 linux環境的程式碼了。

下面是我配置的詳細步驟。

goland 配置

我建立了一個名為tidydocker的專案,然後用goland開啟,進入到goland配置介面配置sftp

image.png
配置遠端的部署路徑,注意我已經在linux伺服器上提前建立好了projects和tinydocker 目錄了。到時候goland在尋找部署目錄時會根據上一個截圖的root path 和下面截圖的Deployment path 結合起來尋找部署目錄。
image.png

接著配置go remote,這樣到時候我們便能夠遠端除錯程式碼。

image.png
在接著配置goland之前,還需要在遠端linux機器上部署除錯工具。

首先肯定要有golang環境

root@ecs-295280:~# go version
go version go1.20.3 linux/amd64
root@ecs-295280:~# 

接著安裝dlv除錯工具

 go install github.com/go-delve/delve/cmd/dlv@latest

寫一個簡單hello world程式

image.png

配置遠端編譯,編譯的選項選擇run on 在我們遠端linux主機上。

image.png
注意編譯時候設定-o引數這樣能讓我們編譯後的檔名稱為tinydocker,不然就是goland為我們自動生成的一串很長的檔名。

點選manager targets 配置編譯後的檔案輸出目錄
image.png

執行效果

這下配置就算全部完成了,點選編譯,goland便會將程式碼自動上傳到遠端,然後執行編譯過程。
image.png
上一步完成後,登入到遠端看看,可以發現已經生成了tinydocker的可執行檔案

root@ecs-295280:~/projects/tinydocker# ls
go.mod  main.go  ReadMe.md  tinydocker
root@ecs-295280:~/projects/tinydocker# pwd
/root/projects/tinydocker
root@ecs-295280:~/projects/tinydocker# 

接著遠端執行除錯命令

root@ecs-295280:~/projects/tinydocker#  dlv exec  tinydocker  --headless --listen=:2345 --api-version=2 --accept-multiclient 
API server listening at: [::]:2345
2023-05-02T01:27:04+08:00 warning layer=rpc Listening for remote connections (connections are not authenticated nor encrypted)

然後本地goland 給hellow world 程式打上斷點 執行remote
image.png
可以看到斷點已經生效了,這樣便配置完成了goland的遠端編譯除錯環境。

相關文章