首先准备好go语言代码
代码表示当访问主机上8080端口下的/hello路径时,会返回hello,world。
package main
import (
"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
添加安全组
我用的服务器是阿里云的,以下是配置阿里云服务器安全组的步骤