Kamal2.8系でlocal registryが利用可能になった

コンテナデプロイツールKamalでlocal registryが利用可能になりました。

今まではDocker Hubなどのコンテナレジストリをセットアップする必要がありました。 local registryが利用可能になったので、よりシンプルにKamalを利用できます。

https://kamal-deploy.org/docs/configuration/docker-registry/

利用方法

Local registryの使い方はとても簡単でです。

registryの設定でlocalhost:5555を指定するだけ。

registry:
server: localhost:5555

localhostを指定するだけでKamal deploy時に自動でlocal registryが立ち上がります。

kamal deploy後にdocker psしてみるとregistryが立ち上がっていることがわかります。

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb5aca8d0563 registry:3 "/entrypoint.sh /etc…" 27 minutes ago Up 15 minutes 127.0.0.1:5555->5000/tcp kamal-docker-registry
ab40cd2041ce moby/buildkit:buildx-stable-1 "buildkitd --allow-i…" 14 hours ago Up 15 minutes buildx_buildkit_kamal-local-registry-docker-container0

https://hub.docker.com/_/registry

deploy時の注意

私は開発環境としてWindowsのWSL2を使っています。 そこでKamal deployをすると次のようなエラーが発生してしまいました。

Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 5555

どうやらホストにgem install kamalで入れたkamalだとうまくいかないようです。 Railsプロジェクトであればbin/kamalを使うようにします。

つまり次のコマンドだとうまくいきました。

bin/kamal deploy

DevContainer使用時の注意点

VSCodeのDevcontainerでkamal deployするときの注意点です。 Railsが生成する.devcontainer/devcontainer.jsonはdocker out side of dockerになっていますが、docker in dockerに変更します。

docker in docker設定

"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {"moby":false},
},

まとめ

kamal 2.8系でlocal registryが導入されたので、Docker Hubなどのコンテナレジストリ不要でデプロイできるようになりました。 より気軽にKamalを使えるようになりましたね! ぜひKamalを使ってデプロイしてみてください!

https://techbookfest.org/product/mrsMgZgK4tpWe379QdKCFt