携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情
前言
之前项目部署都在运维直接处理,一直没有详细的了解部署,于是最近就好好的研究下Go项目的部署,本文主要记录一下使用 Docker 部署 Go 项目的流程。需要的朋友可以参考以下内容,希望对大家有帮助。
环境准备
- go项目
- Docker,如果之前没有用过docker的小伙伴可以参考www.runoob.com/docker/dock…
构建项目
首先在本地正常的创建一个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项目的基本流程如下:
- 环境准备
- 编写go项目代码,并通过可用性测试。
- 编写Dockerfile文件。
- 使用Dockerfile构建Docker镜像
- 查看构建结果并运行
- 测试新建的Docker镜像
具体代码可以参考github.com/mwqnice/gin…