mac环境用容器编译go项目源码

golang推广大使 · · 1363 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

mac环境用容器编译go项目源码

背景

个人工作中时不时会需要写点linux下的临时用的工具。可是自己本机是mac环境,要想把工具放到线上运行,需要代码提交到git服务器上,然后再在linux上拉取代码,然后再编译。总觉得步骤有点繁琐。
于是想自己在mac上直接编译成linux可执行文件,然后直接拷贝到服务器上运行。
其实3年前自己就干过这样的事情,不过当时自己采用的方法时搞个ubuntu的docker镜像,在这个镜像的基础上搭建go语言编译环境。
然后用这个镜像启动一个容器来运行编译。可惜就是镜像有点大。如今docker hub上有了官方的golang镜像,我们可以直接使用官方的docker镜像来进行编译。
具体如下:

docker pull golang:1.12.6
docker run --rm --env GOPROXY=https://goproxy.cn -v "$PWD":/root -w /root/src/project/main golang:1.12.6 go build -v 

简单解释一下上面的命令选项:
--env GOPROXY=https://goproxy.cn 意思为指定环境变量GOPROXY为https://goproxy.cn , 这样go程序在编译前需要下载依赖的话会使用这个环境变量提供的代理服务器。
-v "$PWD":/root 意思为将本地的当前目录挂载到容器的/root目录。
-w /root/src/project/main 指定容器内命令运行时的工作目录为/root/src/project/main
go build -v 在上面的目录中执行go build -v完成编译

编译完成执行可以用file命令查看文件的类型

file /path/filename
 /path/filename: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=2ad90da6f737ef4359816087d9b0de7317077cce, not stripped

从上面的结果中就能看到已经编译出了linux下可执行的文件类型


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:golang推广大使

查看原文:mac环境用容器编译go项目源码

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1363 次点击  
加入收藏 微博
1 回复  |  直到 2019-07-08 08:45:03
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传