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
确保项目可以访问
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 images
执行命令运行容器
docker run -p 8082:3000 -d go-testapp:latest
通过docker ps -a命令可以查看一下容器
最后访问一下
本作品采用《CC 协议》,转载必须注明作者和本文链接
FROM golang:1.22-alpine AS builder
不用多阶段构建,AS builder 去掉吧,感觉怪怪的。