创建go项目
vscode:
mkdir test_docker
cd test_docker
code .
初始化:
go mod init test_docker
创建一个gin项目(以gin为例,其他的go项目都可以)
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "golang-tech-stack.com",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
创建DockerFile
FROM golang:1.18-alpine
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
GOPROXY=https://goproxy.cn,direct \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
WORKDIR /project/go-docker/
# COPY go.mod, go.sum and download the dependencies
COPY go.* ./
RUN go mod download
# COPY All things inside the project and build
COPY . .
RUN go build -o /project/go-docker/build/myapp .
EXPOSE 8080
ENTRYPOINT [ "/project/go-docker/build/myapp" ]
运行docker命令
docker build -f Dockerfile -t test-go-docker:latest .
查看docker镜像
docker images
运行镜像
docker run -d -p 8080:8080 test-go-docker:latest
测试
http://192.168.179.128:8080/ping
运行结果
{"message":"golang-tech-stack.com"}
避坑
1。要配置ENV,GOPATH否则无法下载镜像
2。基础班镜像要和go mod 中的go版本一致