docker部署go应用

阿泽Aze · · 2199 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言

我们微服务很多都是用golang来实现,打算用docker来部署我们的微服务。
而且go的应用就是一个可执行的二进制文件,所以使用docker部署go应用非常简单。
这个教程直接以编译好的可执行的二进制文件为例。

编译注意事项

如果当前系统和拉取的镜像的系统不同,需要交叉编译。比如我当前是在Mac下执行go build编译的,而我拉取的golang镜像是基于Linux的,启动容器时会发现go的二进制文件无法执行,所以要进行交叉编译:GOOS=linux GOARCH=amd64 go build,这里GOOS=linux表示编译到linux,GOARCH=amd64表示64位,如果镜像系统是32位,则GOARCH=386,更多信息请自行Google。

构建应用镜像

由于官方的golang镜像太大了,720多M,所以为了最小化我们的应用,我们采取了alpine镜像,大小连4MB都不到。

1.编写Dockerfile


DockerFile如下:

FROM alpine
MAINTAINER  Aze
WORKDIR /go/src/
COPY . .
EXPOSE 8777
ENTRYPOINT ["./app/main"]

2.构建镜像

docker build -t golang-docker:v1 .
docker部署go应用

运行程序

docker run --name edge-service -d -p 8777:8777 -v /var/www/app/app:/go/src/app golang-docker:v1

docker部署go应用

总结

1.docker使用必须要熟悉各种参数代表的含义,有时候可以让你事半功倍。
2.docker部署golang项目方便以后部署和运维管理,需要挂载目录。
3.配置项可以通过挂载数据卷或者传env环境变量来处理,具体选择还是看实际的场景和需求。

参考

1.http://bazingafeng.com/2017/09/14/deploying-a-go-application-in-docker/
2.https://blog.csdn.net/weixin_34007886/article/details/90491175


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:阿泽Aze

查看原文:docker部署go应用

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2199 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传