【Golang - 实践】Docker部署Golang项目

一 Docker部署

1 分阶段构建

  • 编写Dockerfile
    一般在项目根目录下新建
    设置代理GOPROXY=https://goproxy.cn,direct防止go mod下载超时

Dockerfile

FROM golang:1.16-alpine AS builder

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# 移动到工作目录:/build
WORKDIR /build

# 复制项目中的 go.mod 和 go.sum文件并下载依赖信息

# 设置代理,防止后面因为墙的原因下载go.mod依赖信息超时
# RUN go env -w GOPROXY=https://goproxy.io
COPY go.mod .
COPY go.sum .
RUN go mod download

# 将代码复制到容器中
COPY . .

# 将我们的代码编译成二进制可执行文件 bubble
RUN go build -o qlnc .

###################
# 接下来创建一个小镜像
###################
FROM scratch

# COPY ./templates /templates
# COPY ./static /static

# 从builder镜像中把/dist/app 拷贝到当前目录
COPY --from=builder /build/qlnc /

# 需要运行的命令
ENTRYPOINT ["/qlnc"]
  • 将项目拷贝到服务器
    我在windows打包,再传到linux服务器上构建镜像会有问题,所以将整个项目拷贝到服务器来打包

  • 构建镜像
    在Dockerfile所在目录执行

docker build . -t qlnc_app 
  • 创建容器
    -it --rm创建临时的容器,可以看到日志,但不能继续使用控制台
docker run -it --rm --name qlnc_server -p 8080:8080 qlnc_app

确认没问题后,正式创建容器,-d以守护进程的方式运行

docker run -d --name qlnc_server -p 8080:8080 qlnc_app

2 遇到的问题

问题1:相对路径找不到文件(为解决)
问题2:无法构建镜像

参考docker官方构建go项目镜像的教程,用了golang:1.16-buster作为基础镜像解决了

3 参考教程

二 Nginx部署(未实践)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值