我的Go服务Docker部署模版

栏目: 编程工具 · 发布时间: 5年前

内容简介:网上关于Docker的介绍有很多,我就不复制粘贴了,大家可以自行查找。为什么用Docker?,一般来说是为了保证开发和线上环境一致,并能保证机器的干净,不会被安装一堆依赖。说下题外话,之前开发EOS的时候,就被装了一堆依赖和动态库,差点让强迫症的我想重装电脑...后来写了个docker镜像才算是整理干净,可惜被改过的文件是没办法还原了。官方建议是用alpine镜像,在实际使用过程中,发现还是会缺一些东西,下面是补充之后的新镜像打包出这个镜像并命名go-alpine:

关于Docker

网上关于 Docker 的介绍有很多,我就不复制粘贴了,大家可以自行查找。为什么用Docker?,一般来说是为了保证开发和线上环境一致,并能保证机器的干净,不会被安装一堆依赖。说下题外话,之前开发EOS的时候,就被装了一堆依赖和动态库,差点让强迫症的我想重装电脑...后来写了个docker镜像才算是整理干净,可惜被改过的文件是没办法还原了。

Build一个最小的 Go 应用镜像

官方建议是用alpine镜像,在实际使用过程中,发现还是会缺一些东西,下面是补充之后的新镜像

FROM alpine:latest # 官方推荐镜像大小才5M

RUN apk update \
    && apk upgrade \                        # 更新源和应用
    && apk --no-cache add tzdata \          # 只要go里面用到time的包,那就必装
    && apk --no-cache add openssl \         # 如果用到rsa加密解密,也需要装
    && apk --no-cache add ca-certificates \ # ca证书,这个也是必装的
    && rm -rf /var/cache/apk/ \             # 清除安装包
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \  
    && echo "Asia/Shanghai" > /etc/timezone # 这个是设置默认时区

WORKDIR /mnt/work # 最后设定一个工作目录,这个可以自己定

打包出这个镜像并命名go-alpine:

$ docker build -t go-alpine .

上面的镜像build完才9M左右,我没有把go编译好的服务加进去,这是有原因的,下面会讲到。

Before Docker Run

在实际开发过程中,我们会经常编译go的服务然后运行,难道每次编译都要重新Build一个镜像?当然不,下面是启动前的准备:

$ mkdir -p /mnt/work/service
$ docker volume create --driver local \
            --opt type=none \
            --opt device=/mnt/work/service \
            --opt o=bind \
            --name=service-data-volume

创建了一个放服务的目录并为它创建一个volume

Docker Run

把编译出来的go服务放入volume里面,然后让docker启动的时候加载这个volume,并运行目录内的服务:

$ docker run -d -v service-data-volume:/mnt/work \
    --name local_service \
    -p 8000:8000 \
    go-aplpine ./go_service

这样每次更新都只需要替换volume内的服务,而不需要重新打包镜像了。

Docker-compose

上面说的都是单个服务的情况,实际开发中我们可能用到微服务,那么服务就不止一个了,官方是建议一个服务跑一个docker容器,这样我们就需要用到docker-compose管理多个服务。

原理是差不多的,因为懒,我上传到github了,大家都是程序员,我就不多说了,用代码交流吧,哈哈哈。

go_docker

以上所述就是小编给大家介绍的《我的Go服务Docker部署模版》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计与分析基础

算法设计与分析基础

莱维丁 (Anany Levitin) / 清华大学出版社 / 2013-5-1 / CNY 79.00

《算法设计与分析基础(第3版 影印版)》在讲述算法设计技术时采用了新的分类方法,在讨论分析方法时条分缕析,形成了连贯有序、耳目一新的风格。为便于学生掌握,本书涵盖算法入门课程的全部内容,更注重对概念(而非形式)的理解。书中通过一些流行的谜题来激发学生的兴趣,帮助他们加强和提高解决算法问题的能力。每章小结、习题提示和详细解答,形成了非常鲜明的教学特色。 《算法设计与分析基础(第3版 影印版)》......一起来看看 《算法设计与分析基础》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码