ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

Windows で Go バイナリを Docker でビルドしてみる

Windows で Docker を使って Go をビルドする方法についてまとめてみました。

Dockerhub から golang のイメージの取得先を確認します。
hub.docker.com

コマンドプロンプト(PowerShell窓)を開いて以下のコマンドを実行します。

docker pull golang
latest: Pulling from library/golang
0ecb575e629c: Pull complete                                                                                             7467d1831b69: Pull complete                                                                                             feab2c490a3c: Pull complete                                                                                             f15a0f46f8c3: Pull complete                                                                                             1517911a35d7: Pull complete                                                                                             7b77ca9fcbe3: Pull complete                                                                                             e49d84fb0a44: Pull complete                                                                                             Digest: sha256:9fdb74150f8d8b07ee4b65a4f00ca007e5ede5481fa06e9fd33710890a624331
Status: Downloaded newer image for golang:latest
docker.io/library/golang:latest

docker 内に入ります。

docker run -it golang

パッケージ更新を更新します。

apt-get update && apt-get upgrade

viがないのでviをインストールします。

apt-get install vim

goでスクリプトを書いてみます。

package main

import (
    "fmt"
    "os"
)

func main() {
    s := "world"

    if len(os.Args) > 1 {
        s = os.Args[1]
    }

    fmt.Printf("Hello, %v!", s)
    fmt.Println("")

    if s == "fail" {
        os.Exit(30)
    }
}

実行結果

$ chmod u+x script.go
$ ./script.go
Hello, world!
$ ./script.go gopher
Hello, gopher!
$ ./script.go fail
Hello, fail!
$ echo $?
30