podman / docker 内の Caddy admin API にアクセスする方法

ひきつづき podman 関連のネタです。 podman に CakePHP5 環境を作っている途中ですが、 せっかくなので今回はnginx ではなく Caddy Server を使おうと思い試行錯誤しています。

Caddy は /config/ にアクセスすると設定を取得/変更することができるエンドポイントがありますが、その性質上 localhost (127.0.0.1) からしかアクセスできないようにデフォルトで設定されています。

で今回は、docker でも podman でもコンテナ内で Caddy を動かすとホスト側のブラウザからのアクセスは、コンテナにとっては外部からのアクセスになるのでアクセスできません。(コンテナ使うとよく出会うあの現象です。)

ここにさらっと localhost からのアクセスに制限されているとありますが、どうやったら設定を変更できるかは正直言って見つけにくいです。

わかってしまえば Caddyfile のGlobal block に設定を入れれることがわかるのですが、わからなかったので記事にします。

# global block
# ようは一番上に {} のブロックを入れると global ブロックになるようだ。
{
  admin 0.0.0.0:2019
}
:80 {
  # 80 で待ち受ける内容が以下につづく。
  ....
}

これで curl localhost:2019/config/ でアクセスできるようになりました。

参考

How to execute the Caddy API in Docker? – Help – Caddy Community

Global options (Caddyfile) — Caddy Documentation