如何利用docker 构建golang线上部署环境
jackluo · · 1780 次点击 · · 开始浏览公司最近开发了一个项目是用golang 写的,现在要部署到线上环境去,又不想在服务器上装单独的golang,决定用docker 封装下,直接打到镜像里面,然后就直接在hub.docker.com上面搜了下golang的镜像,直接就docker pull golang 最新的是1.9的版本
然后参考官方的文档弄了下Dockerfile大概是这样:
FROM golang MAINTAINER jackluo #指定工作目录 WORKDIR /go/src/ActivitApi COPY . . CMD ["/bin/bash", "build.sh"]
build.sh里面的代码是这样,大概就是进入目录,编译golang ,最后运行编译好的server 文件
#!/usr/bin/env bash cd /go/src/ActivitApi/server && go build && ./server
其实可以直接运行编译好的.server 文件,因为每次启动的时候,它才去编译,可能启个服务,需要几秒钟的时间,我们写的大概编译再启动需要10秒左右的时间
最后启用docker
#!/usr/bin/env bash docker stop apihdtest docker rm apihdtest docker run -d --name apihdtest \ -p 17071:17071 \ --link mysql:mysql.io \ --link redis:redis.io \ -v $(pwd):/go/src/ActivitApi \ activityapi #docker exec -it apihdtest /bin/bash /go/src/ActivitApi/build.sh
然后这个就启起来了
最后,我们看下完整的截图吧
仅参考.
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
公司最近开发了一个项目是用golang 写的,现在要部署到线上环境去,又不想在服务器上装单独的golang,决定用docker 封装下,直接打到镜像里面,然后就直接在hub.docker.com上面搜了下golang的镜像,直接就docker pull golang 最新的是1.9的版本
然后参考官方的文档弄了下Dockerfile大概是这样:
FROM golang MAINTAINER jackluo #指定工作目录 WORKDIR /go/src/ActivitApi COPY . . CMD ["/bin/bash", "build.sh"]
build.sh里面的代码是这样,大概就是进入目录,编译golang ,最后运行编译好的server 文件
#!/usr/bin/env bash cd /go/src/ActivitApi/server && go build && ./server
其实可以直接运行编译好的.server 文件,因为每次启动的时候,它才去编译,可能启个服务,需要几秒钟的时间,我们写的大概编译再启动需要10秒左右的时间
最后启用docker
#!/usr/bin/env bash docker stop apihdtest docker rm apihdtest docker run -d --name apihdtest \ -p 17071:17071 \ --link mysql:mysql.io \ --link redis:redis.io \ -v $(pwd):/go/src/ActivitApi \ activityapi #docker exec -it apihdtest /bin/bash /go/src/ActivitApi/build.sh
然后这个就启起来了
最后,我们看下完整的截图吧
仅参考.