
- Docker 教程
- Docker - 首頁
- Docker - 概述
- Docker - Linux系統安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 登錄檔
- Docker - Compose
- Docker - 容器操作
- Docker - 架構
- Docker - 層
- Docker - 容器與主機
- Docker - 配置
- Docker - 容器與Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 埠管理
- Docker - Web伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全性
- Docker - 工具箱
- Docker - 雲
- Docker - 雲構建
- Docker - 日誌
- Docker - 持續整合
- Docker - Kubernetes架構
- Docker - Kubernetes工作原理
- Docker - 生成式AI
- Docker - 託管
- Docker - 最佳實踐
- Docker 服務設定
- Docker - Node.js設定
- Docker - MongoDB設定
- Docker - NGINX設定
- Docker - ASP.Net設定
- Docker - MySQL設定
- Docker - Go語言設定
- Docker - Rust設定
- Docker - Apache設定
- Docker - MariaDB設定
- Docker - Jupyter設定
- Docker - Portainer設定
- Docker - Rstudio設定
- Docker - Plex設定
- Docker 設定 - Flame
- Docker 設定 - PostgreSql
- Docker 設定 - Mosquitto
- Docker 設定 - Grafana
- Docker 設定 - Nextcloud
- Docker 設定 - Pawns
- Docker 設定 - Ubuntu
- Docker 設定 - RabbitMQ
- Docker - Python設定
- Docker - Java設定
- Docker - Redis設定
- Docker - Alpine設定
- Docker - BusyBox設定
- Docker 設定 - Traefik
- Docker 設定 - WordPress
- Docker 有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
Docker - Go語言設定
Go,通常被稱為Golang,是一種靜態型別編譯型程式語言,旨在實現簡潔、高效和併發。它越來越受歡迎,已被科技巨頭和初創公司廣泛使用。
雖然Go保證了卓越的效能和良好的開發者體驗,但使用Docker進行容器化可以實現隔離、可移植性和高效的資源利用。這使我們的應用程式能夠變得健壯、高度可擴充套件且易於部署。
在本章中,我們將幫助您將Go應用程式Docker化。我們將解釋如何設定一個非常簡單的Go專案,並在Docker容器內編譯和執行它。
Golang應用程式Docker化的前提條件
首先,請確保您擁有以下內容。
- 已安裝Golang − 從https://golang.org.tw/dl/下載並安裝Go。
- Docker − 根據作業系統從https://www.docker.com/安裝Docker Desktop。
- Go語言基礎知識 − 瞭解Go的語法、結構和構建命令非常有用。
- Docker基礎知識 − 瞭解不同的Docker概念,例如映象、容器和Dockerfile,這將很有幫助。
一旦您具備了這些前提條件,您就可以構建您的Go應用程式並將其進一步容器化。
設定Golang專案
首先,讓我們為Go專案建立一個新目錄。您可以選擇任何您喜歡的名稱,但在本教程中,我們將使用go-docker-app。
$ mkdir go-docker-app $ cd go-docker-app

Go使用模組進行依賴管理。因此,讓我們首先為專案初始化一個新模組。在下面的命令中,您可以將go-docker-app替換為您實際的專案名稱。 `go mod init go-docker-app`
$ go mod init go-docker-app
上述命令將在您的專案目錄中建立一個go.mod檔案。此檔案有助於跟蹤依賴項和模組版本。

現在,讓我們在專案的根目錄下建立一個基本的main.go檔案。在這個檔案中,我們將包含應用程式的入口點。
$ touch main.go
將以下程式碼插入main.go −
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from Go!") }) http.ListenAndServe(":8080", nil) }
這段程式碼定義了一個簡單的HTTP伺服器,它監聽埠8080,並在訪問時返回“Hello from Go!”。
在本地執行Go專案
在將Golang專案Docker化之前,讓我們在本地測試Go應用程式。您可以執行以下命令 − `go run main.go`
$ go run main.go

此命令將編譯並執行您的Go應用程式。執行後,您可以訪問瀏覽器中的以下URL來訪問應用程式:https://:8080。
建立Dockerfile
讓我們為Golang應用程式建立一個Dockerfile,其中包含構建映象所需的所有命令。為此,讓我們在專案目錄的根目錄下建立一個名為Dockerfile的檔案,並複製以下程式碼。
# Use the latest official Golang image as the base FROM golang:latest # Set the working directory inside the container WORKDIR /app # Copy the Go module file (go.mod) to the working directory COPY go.mod ./ # Download dependencies specified in go.mod RUN go mod download # Copy the main Go source file to the working directory COPY main.go ./ # Build the Go application and name the output file as go-docker-app RUN go build -o /go-docker-app # Specify the command to run when the container starts, executing the built binary CMD [ "/go-docker-app" ]
Dockerfile的解釋
- FROM golang:latest − 使用最新的官方Golang映象作為基礎映象。
- WORKDIR /app − 將容器內的工作目錄設定為/app。
- COPY go.mod ./ − 將go.mod檔案複製到工作目錄。
- RUN go mod download − 下載go.mod中指定的依賴項。
- COPY main.go ./ − 將main.go檔案複製到工作目錄。
- RUN go build -o /go-docker-app − 構建Go應用程式並將輸出檔案命名為go-docker-app。
- CMD [ "/go-docker-app" ] − 指定容器啟動時要執行的命令,執行已構建的二進位制檔案。
在下一節中,讓我們構建Docker映象。
構建Golang Docker映象
現在我們的Dockerfile已準備就緒,我們可以繼續構建Docker映象。啟動終端並導航到專案目錄。然後,執行以下命令 − `docker build -t my-go-app .`
$ docker build -t my-go-app .
此命令執行以下操作 −
- docker build − 指示Docker構建映象。
- -t my-go-app − 將構建的映象標記為my-go-app。您可以使用任何所需的標籤名稱。
- . − 指定當前目錄作為構建上下文,其中包括Dockerfile和您的專案檔案。
Docker將逐層處理Dockerfile中的所有指令以建立映象。

使用以下命令,您可以透過列出主機上的所有Docker映象來驗證映象構建。 `docker images`
$ docker images

執行Go Docker容器
現在映象已構建完畢,我們可以執行與此映象關聯的容器。您可以使用以下命令 − `docker run -p 8080:8080 my-go-app`
$ docker run -p 8080:8080 my-go-app
此命令執行以下操作 −
- docker run − 要求Docker建立並啟動一個新容器。
- -p 8080:8080 − 將容器的8080埠對映到主機機的8080埠。這允許您從瀏覽器訪問應用程式。
- my-go-app − 指定要用於容器的映象。
您可以使用以下命令列出所有容器來驗證容器是否正在執行。 `docker ps`
$ docker container ls

您可以看到容器正在執行。您現在可以在Web瀏覽器中訪問https://:8080處的Go應用程式。

結論
在本章中,我們提供了Docker化Go應用程式所需的基礎知識。我們學習瞭如何有效地建立一個簡單的Go專案,適當地構建它,以及編寫一個構建容器化映象的Dockerfile。根據此處所述內容,一旦您瞭解了流程中起核心作用的內容,您現在應該能夠輕鬆地打包和部署Go應用程式。
您可以進一步研究高階Dockerfile技術、映象大小最佳化、多階段構建以及如何在Kubernetes等容器編排上構建Docker化應用程式。掌握這些概念將有助於您構建健壯、可擴充套件且易於維護的Go應用程式。
關於在Docker中設定Golang的常見問題
1. 如何為Golang應用程式建立Dockerfile?
Golang應用程式的普通Dockerfile通常首先繼承包含Golang執行時環境的映象。然後,它設定工作目錄,將Go原始碼複製到其中,構建可執行檔案,最後設定執行應用程式的命令。此映象的大小通常可以使用多階段構建進行最佳化。
2. 如何處理Docker化Golang應用程式中的依賴項?
為了在Docker化Golang應用程式中進行正確的依賴項管理,請使用go mod來管理專案中的依賴項。使用COPY指令的Dockerfile用於複製專案目錄(包括go.mod檔案)。透過這樣做,Docker構建過程將自動解析並下載專案依賴項。
3. 如何提高Docker化Golang應用程式的效能?
Docker化GoLang應用程式的最佳效能可以透過在基礎映象級別進行最佳化來實現,使用編譯後的二進位制檔案而不是讀取和解釋Go程式碼本身,以及分析您的應用程式。您可以嘗試使用不同的Docker映象層或嘗試構建快取。