用 go 的 docker image 來建置 go 專案

指令蠻簡單的,而且可以指定用 go 的哪個版本來進行建置。

# 先切到你的專案目錄下
cd "$WORKSPACE"

# 執行 docker run
docker run --rm -e GOBIN=/usr/src/myapp -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.6 bash -c make
  • –rm 表示執行完就把 container 刪掉
  • -e GOBIN=/usr/src/myapp 是設定環境變數,GOBIN 這環境變數是指編譯好的執行檔所放的位置
  • -v “$PWD”:/usr/src/myapp 表示把當前的目錄掛載到 container 裡的 /usr/src/app
  • -w /usr/src/myapp 表示把工作目錄指定到 /usr/src/myapp
  • golang:1.6 這是表示要使用 golang 1.6 這版,其他版本可以參考 dockerhub
  • bash -c make 是指用 bash 來執行 make,要用 bash 的原因是大部份 Makefile 都是假設用 bash,用其他 shell 會很容易踩到雷。

dockerhub 上有更多說明。

golang debian package

Ubuntu 14.04 預載的 golang 是 1.2.1 版,想使用最新版的 golang ,除了可以用 gvm 以外,也可以用 debian package 來安裝。這篇要介紹的工具是 godeb ,這是一個會自動幫你將最新版的 golang binary 打包為 debian package 並安裝的工具。

首先下載 64-bit 的 godeb binary 檔案並解開:wget -qO – https://godeb.s3.amazonaws.com/godeb-amd64.tar.gz | tar xvz

執行 ./godeb list 就可以列出可安裝的 golang 版本,用 ./godeb install <version> 就可以安裝了。

要注意的是,這會跟預裝的 golang 套件衝突,所以使用前必須先移除原本裝好的 golang 套件。

Golang and GVM

Ubuntu 14.04 預載了 Golang 1.2 ,如果想要其他版本的呢?到官方網站去找,會發現根本找不到下載連結。用 ppa 去找,是可以找到這個 golang 1.4 : Jay R. Wren

為了安全起見,還是用 Version manager 好了,Golang 的 Version manager 在網路上可以找到兩個:govm 跟 GVM,目前看起來比較常見的是 GVM。GVM 的安裝可以參考這篇:7 Easy Steps to Install Go (Golang) on Ubuntu

摘錄安裝步驟如下:

  1. bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
  2. 在 .bashrc 或 .zshrc 裡加入 [[ -s “$HOME/.gvm/scripts/gvm” ]] && source “$HOME/.gvm/scripts/gvm”
  3. 新開或重開終端機

使用方法:

  • 看能下載的版本:gvm listall
  • 列出目前有的版本:gvm list
  • 安裝指定版本:gvm install desired_version
  • 使用指定版本:gvm use go1.4.2
  • 其他指令說明,執行:gvm

 

golang 起手

環境是 Ubuntu 14.04 trusy,14.04 預載的 go 版本是 1.2.1 。

先安裝 golang :sudo apt-get install golang golang-go golang-go.tools ,然後設定環境變數,看是用 bash 或 zsh,bash 就是改 $HOME/.bashrc,zsh 就是改 $HOME/.zshrc,加入:

export GOROOT=$(go env GOROOT)
export GOPATH=$HOME/.go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

然後 mkdir -p $HOME/.go ,$GOPATH 這路徑裡,放的是 go get 所取得的原始碼。

接著就可以照 golang 环境配置建议 裏面的建議來安裝工具,裏面的 oracle 可以跳過,這已經包在 golang-go.tools 裡。另外這篇裡的編輯器是介紹用 Github 的 ATOM,所以該找時間來找一下 vim 的好用 plugin 來用。

要安裝比較新版本的 golang ,除了可以找 ppa 之外,也可以用 govm 或 gvm 來安裝:

govm 看起來顯然是小很多,gvm 在網路上的介紹文比較多,自己目前是還沒試過。