这篇文章主要介绍了使用 docker 构建 golang 线上部署环境的步骤, 文中通过示例代码介绍的非常详细, 对大家的学习或者工作具有一定的参考学习价值, 需要的朋友们下面随着小编来一起学习学习吧
Docker 用于开发
Docker 不仅用于部署, 它还可以用于开发
1 为什么要在开发中使用 Docker
主要有以下几个原因
1)一致的开发环境
使用 Docker, 可以保证整个研发团队使用一致的开发环境
2)开发环境与最终的生产环境保持一致
这减少了部署出错的可能性
3)简化了编译和构建的复杂性
对于一些动辄数小时的编译和构建工作, 可以用 Docker 来简化
4)在开发时只需 Docker
无需在自己的开发主机上搭建各种编程语言环境
5)可以使用同一编程语言的多个版本
可以使用同一编程语言 (如 python, python, ruby, ruby, java, node) 等的多个版本, 无需解决多版本冲突的问题
6)部署很简单
应用程序在容器中运行, 和在生产环境中部署运行是一样的只需打包你的代码并部署到带有同样镜像的服务器上, 或者是把代码连同原镜像建立一个新 Docker 镜像再直接运行新镜像
7)使用自己喜欢的开发 IDE
仍然可以继续使用自己喜欢的开发 IDE, 无需运行 VirtualBox 虚拟机或 SSH
引言
公司最近开发了一个项目是用 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
然后这个就启起来了
最后, 我们看下完整的截图吧
来源: http://www.phperz.com/article/18/0322/361454.html