文章目录
  1. 1. 文档更新说明
  2. 2. 前言
  3. 3. 告别Mac上的Parallels Desktop
  4. 4. 使用xgo在进行跨平台编译Golang程序
  5. 5. 结语

文档更新说明

  • 最后更新 2018年11月05日
  • 首次更新 2018年11月5日

前言

  Docker是一种能把Linux封装成一个容器的技术, 就类似虚拟机, 不过它比虚拟机轻量级, 运行速度更快, 占用资源更少, 目前支持运行在主流操作系统Mac, Win上. 我们都知道目前大部分后端,前端代码服务都是部署在Linux上的, 部署服务最麻烦的地方就是要安装开发环境, 比如PHP,Java,Nodejs等等, 某些代码可能要指定某个版本的语言环境才能使用, 这种情况下用Docker再合适不过了, 直接把开发环境封装在一个镜像里, 运行在Docker容器中, 一劳永逸.
  另一种使用场景, 就是在非Linux系统上模拟出Linux环境用来做开发测试. 比如本文要说的就是在Mac上一些必须使用到Linux系统的场景, 用Docker来解决问题.所以经常和Linux系统接触的开发者, 赶紧行动起来吧, Docker一定是你必备的技能~

告别Mac上的Parallels Desktop

  这当然是说告别PD上的Linux虚拟机了. 刚开始开发Golang的时候, 因为项目部分代码用的C写的, 没法直接在Mac上编译出Linux版本, 所以每一次要发布版本, 我都是先把代码传到Linux虚拟机编译之后再拉到Mac上, 再传到服务器上去,真是够麻烦的, 而且每次还要想一个办法来更新代码.随着Docker技术的成熟, 越来越多的项目开始提供Docker版本的部署方式, 所以也就很自然的接触到Docker了. 接触了就要尝试体验一下, 体验之后发现相见恨晚呀, 开始鄙视不知道Docker的开发者了. 下面我就简单介绍一个例子, 即在非Linux系统上编译出全平台的Golang二进制文件, 涵盖Win, iOS, 安卓运行库.   

使用xgo在进行跨平台编译Golang程序

先把xgo镜像拉下来

docker pull karalabe/xgo-latest

接着把xgo的执行文件也拉到本地GoBin目录下

go get github.com/karalabe/xgo

要了解一下xgo的工作原理, 才不会觉得迷茫. xgo的工作原理就是在本地运行一个带有Golang编译环境的Linux容器, 然后在容器上编译好程序最后再传回到宿主机器上.接下来就可以编译Golang项目了

xgo --targets=linux/amd64 -out 二进制文件名 Go项目的目录

xgo会自动找到main.go入口开始编译程序, 上面指令移除Targets即可编译出全平台的库了.

体验上还是很不错的, 从此告别PD虚拟机, 直接在项目当前目录编译出二进制文件.

结语

  Docker还有很多强大的功能, 目前越来越多的项目开始使用Docker来封装镜像, 告别以前那种繁琐的部署流程, 只需要一个镜像, 就可以对外提供简单强大的第三方服务, 我也要抓紧时间学习学习Docker的其他功能了.😄

文章目录
  1. 1. 文档更新说明
  2. 2. 前言
  3. 3. 告别Mac上的Parallels Desktop
  4. 4. 使用xgo在进行跨平台编译Golang程序
  5. 5. 结语