docker部署go简单web项目(无mysql等附加功能)

发布于:2025-02-26 ⋅ 阅读:(16) ⋅ 点赞:(0)

首先准备好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

在这里插入图片描述

添加安全组

我用的服务器是阿里云的,以下是配置阿里云服务器安全组的步骤
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

验收结果

在这里插入图片描述