之前我寫過如何部署Golang程式到伺服器,這次咱們來寫寫怎麼利用Docker來部署我的Golang,當然如果要部署到Docker
裡面,Docker
是必須安裝的,可以點擊這裡查看安裝步驟。
文/謙益
這篇文章可能不太適合對go和Docker
零基礎人士閱讀,需要有一定的基礎知識。
依賴知識
- Go交叉編譯基礎
- Docker基礎
- Dockerfile自訂鏡像基礎
- docker-compose編排檔案編寫基礎
當然,一點也不會也可以按照這個步驟部署完成,不過可能中間如果出點小問題,會不知道怎麼解決,當然你也可以留言。
我是在mac環境上開發測試的,如果你是在windows上可能有一點出入,但應該不會有啥大問題。
一、依賴環境
二、編寫一個GoLang web程式
我這裡就寫一個最簡單的hello world程式吧,監聽連接埠是80連接埠。
建立一個main.go
檔案,內容如下:
package mainimport ( "fmt" "log" "net/http")func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "hello world")}func main() { http.HandleFunc("/", sayHello)//註冊URI路徑與相應的處理函數 log.Println("【預設項目】服務啟動成功 監聽連接埠 80") er := http.ListenAndServe("0.0.0.0:80", nil) if er != nil { log.Fatal("ListenAndServe: ", er) }}
三、編譯成linux下的程式包
我是在mac上開發的,需要用到go的交叉編譯,如果對交叉編譯不熟悉的,可以查下文檔,或者直接複製我下面的命令進行編譯。
我們是要跑在Docker
裡面,基礎 golang
這個鏡像跑的,所以需要把他編譯成相容 i386
處理器的程式。
sudo env GOOS=linux GOARCH=386 go build main.go
這個編譯完成後,本地會多出一個 main
程式,暫時不用管它備用就行。
四、使用 Dockerfile
定製我們go程式的鏡像
建立一個檔案夾,裡面建立一個Dockerfile
檔案,再在裡面建立app
,script
兩個檔案。把上一步的main
程式放到app
檔案夾裡面,在script
裡面建立一個build.sh
指令檔,檔案內容先不管,等下會說。
具體的檔案結構是這樣。
.├── Dockerfile├── app│ └── main└── script └── build.sh
下面就是編寫Dockerfile
檔案內容了,內容我先上代碼: