部署golang项目到docker

  1. 先新建一个文件夹,该文件夹命名为项目名称
  2. 该项目文件夹下在新建3个文件夹,分别为:
    ● bin
    ● pkg
    ● src
    注:
    ● bin目录存放项目编译后生成的二进制文件,在Windows平台下就是.exe文件。
    ● pkg目录,存放项目所依赖的各种包。
    ● src目录,存放项目源代码。
    ● 同时要注意对项目进行分层,整个项目只有一个mian.go文件
  3. 使用GolandIDE打开该项目,并构建mod模块来管理各种包的依赖关系。初始化mod模块的命令为:
    go mod init 项目名称
  4. 在main.go文件中书写如下代码,构建一个简单的go web项目,代码如下所示:
    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
}

通过代码可知,项目使用gin框架来构建一个简单的web项目,项目成功运行后,系统默认在8080端口进行监听。并且浏览器端通过如下路径进行访问:
localhost:8080/ping
注:
● localhost为本机IP地址(通过在cmd下输入:ipconfig即可查看本机ip)。
● 之所以要在端口后加/ping,是因为/ping是我们在main.go文件中定义的路由。
项目构建并且访问成功,前端页面如下图所示:

后端页面如下图所示:

200是状态码,表示访问成功。
5. 要将golang项目部署到docker,需要新建一个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.* ./
RUN go mod download

COPY . .
RUN go build -o /project/go-docker/build/myapp .

EXPOSE 8080

ENTRYPOINT [ “/project/go-docker/build/myapp” ]

● FROM golang:1.18-alpine:将golang:1.18-alpine用作此docker构建的基础镜像
● ENV:环境配置:用来配置代理、编译环境
● WORKDIR:工作目录路径
● COPY go.* ./:从项目复制go.mod&go.sum文件到工作目录。
● RUN go mod download:从go modules下载项目依赖。
● COPY . .:将我们项目中的所有内容复制到工作目录中。
● RUN go build -o /project/go-docker/build/myapp .:在工作目录中构建我们的项目并将其/project/go-docker/build/myapp作为二进制文件输出。
● EXPOSE 8080:告诉docker我们的代码将暴露在端口8080下。
● ENTRYPOINT [ “/project/go-docker/build/myapp” ]:当我们运行这个镜像的容器时,它将从我们构建的可执行文件开始执行。
6. 各种配置完成之后,在centOS7中使用docker将该项目编译成docker镜像。编译命令为:
docker build -f Dockerfile -t test-go-docker:latest .
● -f flag是我们的Dockerfile
● -t tag是镜像标签
7. 编译完成之后,通过docker images来查看所有的镜像文件。
8. 运行镜像,docker会根据该镜像构建一个容器,运行命令为:
docker run -d -p 8080:8080 test-go-docker:latest
● -d表示后台运行
● 8080:8080表示将centOS的8080端口,映射到Goland中的8080端口。
9. **在浏览器端输入如下地址即可访问我们部署到docker中的项目:
192.168.1.103:8080/ping
192.168.1.103是centOS系统的IP地址,查看centOS系统的IP地址输入如下指令便可:
ip address show
总结
对Dockerfile文件中为什么要这样写不太清楚,对部署golang项目到docker中也不太清楚,有一些地方比较模糊,下去多看看相关的视频。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值