1.概要
DockerのGo言語コンテナイメージを使用し、何もない状態(Dockerは導入済み)でGo言語を1行の命令でコンパイルする方法をご紹介します。
- Dockerのインストールはこちら (Dockerオフィシャルサイト)
- DockerのコンテナイメージはDocker Hubのオフィシャルイメージを使用(Official Repository golang)
2.方法
2.1.ソースファイルの格納場所に移動
Dockerを利用できる状態のコマンドプロンプト(DOCKER CLIなど)でホームディレクトリ配下のGo言語のソースを置いているディレクトリに移動。(Windows/Maxの場合、デフォルトではDockerが動作しているVirtualBoxの共有フォルダがUserディレクトリとなっているため)
(例)
cd ~/develop/go
サンプルとして上のディレクトリにサンプルのソースファイルを置きます。
hello.goファイル
go
package main
import "fmt"
func main() {
fmt.Println("こんにちは世界")
}
2.2.コンパイルの実行
カレントディレクトリのソースをコンパイルします。
GOOSとGOARCHの値を変更するだけで、違うアーキテクチャの実行ファイルを作成できます。(WindowsでMacの実行ファイルなど)
Windowsの場合
docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.6 go build -v
- 初回はコンテナイメージのダウンロードが発生するため多少時間が掛かります。(次回からは一瞬)
- Macの場合⇒「 -e GOOS=darwin -e GOARCH=amd64 」
- Linuxの場合⇒「 -e GOOS=linux -e GOARCH=amd64 」
他のアーキテクチャの場合は下の「 GOOS・GOARCH一覧リスト 」を参照。
2.3.実行してコンパイル結果を確認
Windowsの場合
コマンドプロンプトから先ほどのディレクトリに移動して作成されたexeファイルを実行。

補足
GOOS・GOARCH一覧リスト
| $GOOS | $GOARCH |
|---|---|
| darwin | 386 |
| darwin | amd64 |
| darwin | arm |
| darwin | arm64 |
| dragonfly | amd64 |
| freebsd | 386 |
| freebsd | amd64 |
| freebsd | arm |
| linux | 386 |
| linux | amd64 |
| linux | arm |
| linux | arm64 |
| linux | ppc64 |
| linux | ppc64le |
| linux | mips64 |
| linux | mips64le |
| netbsd | 386 |
| netbsd | amd64 |
| netbsd | arm |
| openbsd | 386 |
| openbsd | amd64 |
| openbsd | arm |
| plan9 | 386 |
| plan9 | amd64 |
| solaris | amd64 |
| windows | 386 |
| windows | amd64 |

