likes
comments
collection
share

使用 Docker 部署 Go 项目,并把 Docker 镜像发布到镜像仓库

作者站长头像
站长
· 阅读数 17

大家都知道Go编译后是可执行的二进制文件,一般我们的项目会部署在Linux中,Docker也是现在常用的部署方案,伸缩扩容、迁移都更方便。该篇文章教大家使用Docker来部署go项目,最后把Docker镜像发布啊镜像仓库(这里使用阿里云镜像仓库),公司内部一般发布到公司私有镜像仓库,方便其他服务器拉取镜像部署等。

一、安装 Docker

linux服务器使用curl下载快速安装的shell脚本

curl -fsSL get.docker.com -o get-docker.sh

下载完成后,可以ls命令查看一下。已经存在的话,使用sh命令执行这个脚本

sh get-docker.sh

注意如果不是root用户,需要使用sudo su获取超级管理员权限。

安装完成后启动一下Docker Server

systemctl start docker

使用docker version命令能看到ClientServer就启动成功了。

二、使用 Docker 部署 Go 项目

这里我使用一个自己开发的Gin项目,首先在项目跟目录下创建一个Dockerfile文件

使用 Docker 部署 Go 项目,并把 Docker 镜像发布到镜像仓库

写入以下内容:

# 指定基础的go编译镜像
FROM golang:alpine as build

# 指定go的环境变量
ENV GOPROXY=https://goproxy.cn \
    GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# 指定工作空间目录,会自动cd到这个目录
WORKDIR /build

# 把项目的依赖配置文件拷贝到容器中,并下载依赖
COPY go.mod .
COPY go.sum .
RUN go mod download

# 把项目的其他所有文件拷贝到容器中
COPY . .

# 编译成可执行二进制文件
RUN go build -o app .

# 指定新的运行环境,最终的运行会基于这个坏境,使得最终的镜像非常小
FROM scratch as deploy

# 把编译环境中打包好的可执行文件和配置文件拷贝到当前镜像
COPY --from=build /build/app /
COPY --from=build /build/conf ./conf

CMD ["/app"]

在项目根目录使用以下命令来构建镜像

docker build -t gotodo .

构建好后使用docker images来查看我们打包好的镜像

使用 Docker 部署 Go 项目,并把 Docker 镜像发布到镜像仓库

最终运行容器:

docker run -itd -p 7000:7000 gotodo

三、上传镜像到镜像仓库

把我们构建好的镜像上传到镜像仓库,方便我们跨服务器部署或伸缩容等,这里我使用阿里云个人免费镜像仓库演示,公司内部一般搭建私有的镜像仓库(与阿里云镜像仓库同理)。

首先去阿里云申请并创建下个人免费镜像仓库,具体申请方法可百度等,很简单。

创建时代码源选择本地仓库

创建好后如下:

使用 Docker 部署 Go 项目,并把 Docker 镜像发布到镜像仓库

我们参考3.将镜像推送到Registry

  1. 首先用docker login在本地登录
  2. 再使用docker tag对我们刚才的镜像重新打一个tag

使用 Docker 部署 Go 项目,并把 Docker 镜像发布到镜像仓库

  1. 使用docker push把重新打好tag的镜像上传到仓库

使用 Docker 部署 Go 项目,并把 Docker 镜像发布到镜像仓库

上传完成后可以在阿里云上看到版本等

使用 Docker 部署 Go 项目,并把 Docker 镜像发布到镜像仓库

最后其他服务器想拉取这个镜像也很简单,直接

docker pull registry.cn-hangzhou.aliyuncs.com/junkaione/gotodo:v1.0.0

运行容器

docker run -itd -p 7000:7000 registry.cn-hangzhou.aliyuncs.com/junkaione/gotodo:v1.0.0

到此,使用 Docker 来部署我们的 Go 项目,及把打包后的镜像上传到镜像仓库的文章就结束了,如果大家有什么疑问,可以评论区留言哈,拜托大家点赞收藏一下, 🙏 🙏