在使用 Go 開發 Web 應用程序時,無論是用于 HTTP 還是其他類型的服務,部署到不同的階段或環境(本地開發、生產環境等)都是一個常見的考慮因素。在本文中,我們將探討在 Docker 容器內集成 Golang 棧的方法,這是一個被廣泛采用的方法,并使用 Docker Compose 進行編排。
首先,您需要一個功能齊全的 Go 應用程序。以下是我們 main.go 文件的代碼及其簡要說明:
// /src/main.gopackage mainimport ( "fmt" "net/http" "os")func main() { var PORT string if PORT = os.Getenv("PORT"); PORT == "" { PORT = "3001" } http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World from path: %s/n", r.URL.Path) }) http.ListenAndServe(":"+PORT, nil)}
這段代碼設置了一個基本的 HTTP 服務器,當接收到請求時返回“Hello World”,并根據環境變量動態分配一個端口。
接下來的步驟是創建一個 Dockerfile,該文件定義了構建和運行您的 Go 應用程序的環境。
# /DockerfileFROM golang:alpineADD ./src /go/src/appWORKDIR /go/src/appENV PORT=3001CMD ["go", "run", "main.go"]
Dockerfile 的解釋如下:
假設您已安裝 Docker 運行環境,請按照以下步驟操作:
(1) 構建 Docker 鏡像:
docker build . -t my-golang-app-image
(2) 從該鏡像運行一個容器:
docker run -p 3030:3001 -it --rm --name my-golang-app-run my-golang-app-image
在這里,我們指示 Docker 運行一個新容器,將主機端口 3030 綁定到容器的內部端口 3001,將 stdout 輸出顯示在當前終端上,在其進程終止后刪除容器,并為容器分配一個自定義名稱。
試一試!
在您的瀏覽器中訪問 localhost:3030,您應該會看到文本“Hello World from path: /”。要停止容器,請按 Ctrl + C。
Docker Compose 允許集成多個容器。雖然對于此練習來說可能有些大材小用,但對于未來的場景是寶貴的知識。創建一個 docker-compose.yml 文件:
# /docker-compose.ymlversion: '2'services: my-golang-app-run: container_name: my-golang-app-run build: . command: go run main.go volumes: - ./src:/go/src/app working_dir: /go/src/app ports: - "3030:3000" environment: PORT: 3001
現在,運行以下命令:
docker-compose up
再次在瀏覽器中訪問 localhost:3030,您將看到與之前使用 Docker Compose 相同的結果。要停止容器,請按 Ctrl + C。
請注意,我們從未在本地環境中安裝 Go。只需安裝 Docker,您就可以避免在本地環境中安裝各種運行時,這在處理具有不同運行時的多個項目時非常有用。
我們成功地配置了一個 Dockerfile,用于構建圖像和運行具有 Go 應用程序所需環境的容器。此外,Docker Compose 定義文件允許我們在需要時無縫運行容器與其他服務。
希望這個指南對您有所幫助!
本文鏈接:http://www.www897cc.com/showinfo-26-60946-0.html使用 Docker 進行 Go 應用程序引導指南
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 在Go中構建復雜對象: 構建器模式指南
下一篇: 使用C++數組實現簡單的棧數據結構