地方でリモートワーク

リモートワーク、プログラミング、エンジニア、地方

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に変更します。

  "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