✨
ko を試してみた(未解決)
golangのアプリケーションサーバをdockerイメージ化する際にとても便利なツールとしてkoがあるというのを知ったので試してみたが、ビルドがうまくいかない。dockerデーモンを探しているようだ。
terminal
$ ko publish --local --base-import-paths .
2022/02/11 23:08:11 Using base gcr.io/distroless/static:nonroot for httpserver_sample
2022/02/11 23:08:14 Building httpserver_sample for linux/amd64
2022/02/11 23:08:15 Loading ko.local/httpserver_sample:0cfada1c160085680b8686635a06dd9f4f0e7fb7c561e5f4a84eaa60049bcc91
2022/02/11 23:08:15 daemon.Write response:
Error: failed to publish images: error publishing ko://httpserver_sample: error loading image: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
2022/02/11 23:08:15 error during command execution:failed to publish images: error publishing ko://httpserver_sample: error loading image: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
何がトリガーとなってdocker daemonを探すようになっているのだろう。
if repoName == publish.LocalDomain || po.Local {
// TODO(jonjohnsonjr): I'm assuming that nobody will
// use local with other publishers, but that might
// not be true.
return publish.NewDaemon(namer, po.Tags,
publish.WithDockerClient(po.DockerClient),
publish.WithLocalDomain(po.LocalDomain),
)
}
このif文がtrueになっていないといけないのに、falseになっているということか。
cmd.Flags().BoolVarP(&po.Local, "local", "L", po.Local,
"Load into images to local docker daemon.")
おや。--localオプションは docker daemonを探しにいくのかよ、、。
dockerをインストールしていない場合のオプションはどうするのかな。
k8s 上にリポジトリを作成してそれを KO_DOCKER_REPO
に指定するのが良いかもしれない。
それもちょっとめんどくさそうだなぁ。
Discussion