手把手教你基于Docker部署Go项目超简单

2,927 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情

前言

之前项目部署都在运维直接处理,一直没有详细的了解部署,于是最近就好好的研究下Go项目的部署,本文主要记录一下使用 Docker 部署 Go 项目的流程。需要的朋友可以参考以下内容,希望对大家有帮助。

环境准备

构建项目

首先在本地正常的创建一个go项目,这里以gin为例。为了省时间就用之前建的一个demo为例:

git下载源码:github.com/mwqnice/gin…

编写Dockerfile

#依赖镜像
FROM golang:1.15-alpine

#作者信息
MAINTAINER "mwqnice"

# 配置模块代理
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct

#工作目录
WORKDIR /opt
ADD .  /opt

#在Docker工作目录下执行命令
RUN go build -o main ./main.go

#暴露端口
EXPOSE 8080

#执行项目的命令
CMD ["/opt/main"]

说明:

  • FROM golang:1.15-alpine :将golang:1.15-alpine用作此Docker构建的基础镜像,和自己使用的go版本进行统一。
  • WORKDIR 是将项目放到容器中的位置
  • ADD ./opt 将项目中的所有文件放入容器的opt文件下
  • RUN go build -o main ./main.go 生成二进制文件
  • EXPOSE 8888 暴露端口
  • CMD ["/opt/main"] 执行项目的命令

构建镜像

基本语法:

docker build -t [镜像名] [Dockerfile所在目录]

具体示例:

docker build -t gin-demo .

运行容器

docker run -d -p 8080:8080 gin-demo 

成功执行后,该命令会返回类似af233da7afe9e330f119a834119eff74c2c7e3c4e908dde8c89f41c903f6d531这样的字符串,这个是运行的容器的ID,也叫container id。

测试

浏览器访问:http://localhost:8080/b

ok 大功告成!

小结

通过以上的内容我们可以总结docker构建go项目的基本流程如下:

  1. 环境准备
  2. 编写go项目代码,并通过可用性测试。
  3. 编写Dockerfile文件。
  4. 使用Dockerfile构建Docker镜像
  5. 查看构建结果并运行
  6. 测试新建的Docker镜像

具体代码可以参考github.com/mwqnice/gin…