假设有如下程序 hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello World!\n")
}
系统变量中定义要使用的 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
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!
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 删除。