五分钟用 Docker 快速搭建 Go 开发环境

栏目: IT技术 · 发布时间: 4年前

内容简介:挺早以前在我写过一篇用因为靠我们使用官方最新稳定版的镜像

挺早以前在我写过一篇用 Docker 搭建LNMP开发环境的文章: Docker 搭建 Laravel 开发环境 ,里面详细介绍了将  nginxmysqlphp 三个容器用 docker-compose 编排成 LNMP 开发环境的步骤,今天来说说怎么用 Docker 快速搭建 Go 语言项目的开发环境。

因为靠 Go 本身自带的标准库就能实现高性能的 HTTP 服务器,不熟悉的同学买它,呃说错了,看它: 深入学习用 Go 编写HTTP服务器 。所以用 Docker 构建 Go 的开发环境比构建 LNMP 开发环境要简单很多,如果没有太多定制化要求甚至都不用写 Dockerfile 自己构建镜像,直接使用官方的 golang 镜像即可。

获取Docker镜像

我们使用官方最新稳定版的镜像 golang:latest , 获取镜像前先得确保你电脑上运行了 Docker 客户端,没有的去官网下载一下吧这里就不多说了。

下载 dockerHub 上的镜像直接使用命令:

下载完镜像后用镜像运行一个容器:

上面这个命令用镜像 golang 创建了一个名为 go-http-demo 的容器,在容器中创建了一个 Bash 会话。 --rm 选项指定容器退出后自动移除容器。

运行完上面的命令后我们就进入了运行的容器中,运行 go version 查看以下 go 的版本:

你可以根据自己的需要在 https://hub.docker.com/_/golang 中查找自己需要的版本的 golang 镜像运行容器。

在容器中运行Go项目

我们使用《 深入学习用Go编写HTTP服务器 》中最后写的支持优雅关停服务的 HTTPServer 的源码,将它放到 Docker 容器里伺服宿主机的请求。 HTTP Server 的源码如下,想探究代码具体怎么实现的看链接里的文章就好了。

把源码放在本地电脑的 /Code/go/src/example.com/http-demo/main.go 中,文件目录你们做的时候根据自己的情况写路径。

接下来就要把这个代码放到容器里去运行了,切到代码目录里执行如下命令:

-v 选项允许我们挂载多个本地目录或者数据卷到容器中,更改会在容器内外相互同步,上面的命令将 /Code/go/src/example.com/go-http-demo/ 挂载到了容器的 /go/src/example.com/go-http-demo

-p 指定主机和容器的端口映射,因为代码里 HTTP 服务是监听 8080 端口的,所以我们将主机的 8000 端口和容器的 8080 端口做了映射。

执行完上面的命令,我们切换到到容器里的 Bash 会话,切到代码目录运行 go run main.go 后,在自己的电脑上打开浏览器访问 http:localhost:8080 看到下图中的页面就证明服务器在容器里已经正常运行起来了。

五分钟用 Docker 快速搭建 Go 开发环境

用docker-compose管理容器

通过上面的内容我们已经用 Docker 构建好了一个 Go 的开发环境,不过每次打那堆命令,还要进容器执行 go 命令启动程序太费事了,我们用 docker-compose 把上面那些流程自动化一下。

在项目代码根目录创建 docker-compose.yml

如果你们项目里不允许就找个目录放这个文件,我自己就是单独有个目录里面放了好几个项目的 Docker 配置文件,有 PHP 项目的也有 Go 项目的。

上面的编排文件里只定义了一个叫 app 的服务,其他的也很容易理解我就不说了,唯一要注意的一点就是如果 yml 文件在项目外 volumes 里的配置就换成绝对路径不要用 $PWD

接下来启动 docker-compose :

如果启动不成功先不要在 daemon 模式下运行把 -d 去掉,就能看到具体什么错误,等调试正常了再后台启动。

代码有修改后,需要重新编译项目,针对我们的容器执行下面的命令即可

想要进入运行的容器中执行操作使用命令:

给我们创建的 app 发送 go test 命令让它在容器内执行:

最近想尝试把老项目换成用 go mod 管理,项目还是在用 go1.12 所以我就先用 Docker 搭环境,容器隔离的环境怎么瞎折腾也没事。今天做的这个开发环境还是很简单的,没有用 Dockerfile 自己创建镜像, docker-compose 配置文件里的设置也很简单,后面用着不顺手有更新了我再推送。下面的两篇老文章对 Docker 镜像和 docker-compose 讲的都比较深入,例子也多,感兴趣的可以看看。

教你如何做出想要的PHPDocker镜像

用Docker搭建Laravel开发环境

如果按照文章里说的步骤自己搭建环境的时候遇到什么问题了,可以在文章下方留言, 喜欢我的文章欢迎点在看和转发支持。也欢迎去我新建的知识星球(不收费)一起共建一个 Go语言互助团。

五分钟用 Docker 快速搭建 Go 开发环境


以上所述就是小编给大家介绍的《五分钟用 Docker 快速搭建 Go 开发环境》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法

数据结构与算法

张铭、王腾蛟、赵海燕 / 高等教育出版社 / 2008-6 / 34.00元

《数据结构与算法》是普通高等教育“十一五”国家级规划教材,也是北京市精品课程主讲教材。《数据结构与算法》按照IEEE/ACM CC20025和教育部教指委关于“计算机科学与技术专业规范”(CCC2005)的要求编写,力求使学生较全面地理解数据结构的概念、掌握各种数据结构与算法的实现方式,同时比较不同数据结构和算法的特点,重点强调实践教学和学生动手能力的培养。 《数据结构与算法》的内容涉及基本......一起来看看 《数据结构与算法》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码