golang学习总结(四)-程序编译

20 篇文章 0 订阅

最近开发了一个小程序,到了部署阶段,学习了部署的步骤,总结如下:

  • 下载基础镜像

golang编译使用的基础镜像有以下三种:

1.golang:onbuild

构建简单,包含编译是的所有运行环境,但体积较大
Dockerfile配置如下:
FROM golang:onbuild
EXPOSE 8080

2.golang:alpine

构建复杂, 需执行编译动作,体积小
Dockerfile配置如下:
FROM golang:alpine
WORKDIR /app
ADD . /app
RUN cd /app && go build -o goapp
EXPOSE 8080
ENTRYPOINT ./goapp

3.golang:alpine AS build-env

构建复杂,体积更小,携带工具少,安全性更高(推荐)
Dockerfile配置如下:
FROM golang:alpine AS build-env
WORKDIR /app
ADD . /app
RUN cd /app && go build -o goapp

FROM alpine
RUN apk update && \
   apk add ca-certificates && \
   update-ca-certificates && \
   rm -rf /var/cache/apk/*
WORKDIR /app
COPY --from=build-env /app/goapp /app
EXPOSE 8080
ENTRYPOINT ./goapp
  • 对基础镜像打tag,上传至私有镜像仓库(方便后面编译的时候直接调用私有镜像仓库镜像)

docker dag imageID 私有镜像地址/golang:onbuild   --为镜像打tag

docker login 私有镜像地址  --登录私有镜像,此处有两点需要注意,

一是要在daemon.json文件中添加insecure-registries,注意格式要正确,然后重启docker,如果启动报错,请检查/etc/systemconfig/docker(参考https://www.cnblogs.com/John5/p/docker.html);

{
"insecure-registries":["私有镜像地址"]
}
二是网络连接超时,我在hosts添加了域名解析后OK;

登陆成功后执行push语句,将镜像上传到镜像仓库

docker push 私有镜像地址/golang:onbuild

  • 修改Dockerfile

进入golang开发的项目文件根目录,找到Dockerfile,修改参照如下

FROM 私有镜像地址/golang:onbuild
MAINTAINER 维护者名字
EXPOSE 3333
  • 执行编译

这里我将项目文件所在目录挂载到docker虚机上,切换到项目文件根目录,执行docker build -f Dockerfile . (记录,最后这个点千万别忘了,这代表当前目录),然后执行docker images,你看到已经生成新的镜像文件,拿着这个镜像文件去部署就OK了。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SeasonRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值