咱们微服务不少都是用golang来实现,打算用docker来部署咱们的微服务。
并且go的应用就是一个可执行的二进制文件,因此使用docker部署go应用很是简单。
这个教程直接以编译好的可执行的二进制文件为例。linux
若是当前系统和拉取的镜像的系统不一样,须要交叉编译。好比我当前是在Mac下执行go build编译的,而我拉取的golang镜像是基于Linux的,启动容器时会发现go的二进制文件没法执行,因此要进行交叉编译:GOOS=linux GOARCH=amd64 go build,这里GOOS=linux表示编译到linux,GOARCH=amd64表示64位,若是镜像系统是32位,则GOARCH=386,更多信息请自行Google。golang
因为官方的golang镜像太大了,720多M,因此为了最小化咱们的应用,咱们采起了alpine镜像,大小连4MB都不到。docker
DockerFile以下:app
FROM alpine MAINTAINER Aze WORKDIR /go/src/ COPY . . EXPOSE 8777 ENTRYPOINT ["./app/main"]
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:v1ide
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/90491175ui