前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 Docker 分分钟搭建起 Golang 开发环境

基于 Docker 分分钟搭建起 Golang 开发环境

原创
作者头像
姚俊刚
发布2018-07-28 22:57:31
2.7K0
发布2018-07-28 22:57:31
举报

示例代码

假设有如下程序 hello.go

package main

import "fmt"

func main() {
	fmt.Println("Hello World!\n")
}

定义使用 go 语言的版本

系统变量中定义要使用的 go 语言版本,方便后期切换 go 语言版本。

export GO_VERSION=1.10

直接执行

docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:$GO_VERSION go run ./hello.go

首次运行需要下载修改的image,输出如下:

 $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:$GO_VERSION go run ./hello.go
Unable to find image 'golang:1.10' locally
1.10: Pulling from library/golang
55cbf04beb70: Pull complete
1607093a898c: Pull complete
9a8ea045c926: Pull complete
d4eee24d4dac: Pull complete
9c35c9787a2f: Pull complete
6a66653f6388: Pull complete
102f6b19f797: Pull complete
Digest: sha256:957f390aceead48668eb103ef162452c6dae25042ba9c41762f5210c5ad3aeea
Status: Downloaded newer image for golang:1.10
Hello World!

编译

docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:$GO_VERSION go build -v

命令执行输出:

默认编译的为 Linux 版,在 Mac 下是执行失败的

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:$GO_VERSION go build -v
_/usr/src/myapp
 $ ls
hello.go myapp
 $ ./myapp
-bash: ./myapp: cannot execute binary file

编译为 Mac 版

docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=darwin -e GOARCH=amd64 golang:$GO_VERSION go build -v

命令执行输出:

 $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=darwin -e GOARCH=amd64 golang:$GO_VERSION go build -v
errors
internal/race
runtime/internal/sys
runtime/internal/atomic
sync/atomic
runtime
internal/cpu
math
internal/testlog
unicode/utf8
strconv
unicode
sync
io
syscall
reflect
time
internal/poll
os
fmt
_/usr/src/myapp
 $ ls
hello.go myapp
 $ ./myapp
Hello World!

编译为 Windows 版

docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:$GO_VERSION go build -v

虽然 Golang 的开发环境相对容易搭建,但是使用 docker 的优势是能方便的切换 golang 的版本,而且开发环境对开发时所使用的机器没有任何的依赖,这也为协作开发时保持开发环境的一致性提供了便利。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例代码
  • 定义使用 go 语言的版本
  • 直接执行
  • 编译
    • 编译为 Mac 版
      • 编译为 Windows 版
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档