前言
我们微服务很多都是用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 run --name edge-service -d -p 8777:8777 -v /var/www/app/app:/go/src/app golang-docker:v1
总结
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
有疑问加站长微信联系(非本文作者)