首先準備好go語言代碼
代碼表示當訪問主機上8080端口下的/hello路徑時,會返回hello,world。
package mainimport ("fmt""github.com/gin-gonic/gin"
)type hh struct {S string
}func main() {router := gin.Default()router.GET("/hello", func(c *gin.Context) {c.JSON(200, hh{S: "hello world!"})})err := router.Run(":8080")if err != nil {fmt.Println(err)return}}
準備Dockerfile文件
FROM golang:1.23# 為我們的鏡像設置必要的環境變量
ENV GO111MODULE=on \CGO_ENABLED=0 \GOOS=linux \GOARCH=amd64 \GOPROXY=https://goproxy.io,direct# 移動到工作目錄:/app/demo3
WORKDIR /app/demo3# 先復制 go.mod 和 go.sum 文件
COPY go.mod go.sum ./# 下載依賴
RUN go mod download# 將剩余代碼復制到容器中
COPY . .# 編譯 Go 代碼,指定輸出文件名為 main
RUN go build -o main main.go# 聲明服務端口
EXPOSE 8080# 啟動容器時運行的命令
ENTRYPOINT ["./main"]
注意第一行基礎鏡像的版本要和你項目所用的go版本相同
將以下文件放入宿主機中
構建鏡像
首先在宿主機上進入Dockerfile文件所在的目錄,然后輸入以下命令開始構建鏡像 。 注意 -t 后跟的是鏡像名,是自定義的,可以不和我一樣。
docker build -t demo3image .
輸入完成后等待構建成功即可,構建不會很快,我這里等了大概有十多分鐘。
創建并運行容器
鏡像前面創建好了,我們現在要讓鏡像在容器里跑起來,輸入下方指令即可。–name 后的demo3表示容器名稱,可以自定義。
docker run -d --name demo3 -p 8080:8080 dem03image
添加安全組
我用的服務器是阿里云的,以下是配置阿里云服務器安全組的步驟