Windows上でLinux向けGoバイナリをDockerでビルドする

Posted on Dec 4, 2017

小ネタです

Goはクロスプラットフォーム開発しやすい言語なのですが、Windows上でLinux向けバイナリーをビルドするなら、gccが要ります。正直なところ入れたくありません。なのでDockerでやります。

条件

  • Docker for Windows
    • Linuxモード
    • ドライブ共有

PowerShell窓で実行

ビルドしたいGoのソースがあるディレクトリで以下のコマンドを実行します。Linux向けバイナリーが同じディレクトリに出来ます。

docker run --rm -it -e GOPATH=/go --mount type=bind,source=${env:GOPATH},target=/go --mount type=bind,source=${PWD},target=/work -w /work golang:1.9.2-alpine go build -a -tags netgo -installsuffix netgo -o yourapp_linux
  • golang:1.9.2-alpine DockerイメージはGOPATHに/goを設定してビルドされていますが、念のため実行時にも設定
  • -v オプションでのマウントは非推奨になったので –mount で
  • スタティックリンク