Docker 部署 Go 语言程序以windows系统为例

1.首先是你的系统上装上Docker.desktop

创建go-web项目gotest
main.go

package main

import (
    "fmt"
    "net/http"
)

func test2(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World!")
}
func main() {
    http.HandleFunc("/", test2)
    http.ListenAndServe(":3000", nil)
}

在命令行执行

$ go run main.go

确保项目可以访问

Docker 部署 Go 语言程序以windows系统为例
Go 语言支持跨平台交叉编译,也就是说我们可以在 Windows 或 Mac 平台下编写代码,最后将代码编译成能够在 Linux amd64 服务器上运行的程序。

根目录使用以下指令可以静态编译 Linux 平台 amd64 架构的可执行文件:

$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o gotest

切记无扩展名在项目根目录下创建Dockerfile文件(切记无扩展名)

# 使用官方Go镜像作为构建环境
FROM golang:1.22-alpine AS builder

RUN mkdir /app
# 设置工作目录
WORKDIR /app
# 复制项目文件
COPY gotest /app/gotest
# 运行可执行文件
ENTRYPOINT [ "./gotest" ]

打开docker应用,在项目根目录下运行以下命令来构建Docker镜像:

#go-testapp这个是镜像名称换成你的your-image-name
docker build -t go-testapp .

过程可能需要几分钟

Docker 部署 Go 语言程序以windows系统为例
之后通过命令查看一下生成的镜像

docker images

Docker 部署 Go 语言程序以windows系统为例
执行命令运行容器

docker run -p 8082:3000 -d go-testapp:latest

Docker 部署 Go 语言程序以windows系统为例

通过docker ps -a命令可以查看一下容器

Docker 部署 Go 语言程序以windows系统为例

最后访问一下

Docker 部署 Go 语言程序以windows系统为例

本作品采用《CC 协议》,转载必须注明作者和本文链接
于江
讨论数量: 2
wuvikr

FROM golang:1.22-alpine AS builder 不用多阶段构建,AS builder 去掉吧,感觉怪怪的。

1个月前 评论
heaker (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!