Docker Container Station - nginx-proxy-managerのセットアップ方法は?

CSでnginx-proxy-managerをDocker Composeアプリケーションとしてセットアップしようとしています。以下のyamlファイルでロードはできていますが、リバースプロキシを設定しようとすると、同じくCS上でDocker Composeアプリとして動作している内部アプリに到達できません。CSでNPMを動かせた方はいらっしゃいますか?

アプリの管理画面にはアクセスでき、ログインしてリバースプロキシを作成し、Let’s Encrypt証明書も取得できますが、内部アプリへのパススルーができません。よくある504エラーが出ます。

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    stdin_open: true
    tty: true
    ports:
      # これらのポートは <host-port>:<container-port> の形式です
      - '80:80' # 公開HTTPポート
      - '443:443' # 公開HTTPSポート
      - '81:81' # 管理Webポート
      # 他に公開したいストリームポートがあれば追加してください
      # - '21:21' # FTP

    environment:
      # コンテナ内のSQLite DBファイルの場所を変更したい場合はコメントを外してください
      # DB_SQLITE_FILE: "/data/database.sqlite"

      # ホストでIPv6が有効でない場合はコメントを外してください
       DISABLE_IPV6: 'true'

    volumes:
      - /share/nginx-proxy-manager/data:/data
      - /share/nginx-proxy-manager/letsencrypt:/etc/letsencrypt

さまざまなことをテストして、少し進展がありました。

NPMアプリでは、NATとブリッジネットワークを追加する必要があります。ブリッジには静的IPアドレスが割り当てられます。NATは他のコンテナへのアクセスを可能にします。

テスト時には、bashコマンドを実行してnpmコンテナ内でcurlを使い、アクセスを試すことができます。今のところ、コンテナのメインIPアドレス(例:192.x.x.x)を使うとうまくいきませんが、natのIPアドレス(10.0.3.x)を使うと他のコンテナにアクセスできます。コンテナ名はNPM内では機能しないようです。

もう少し試行錯誤すれば、うまく動かせるかもしれません。笑

yaml composeファイルでデフォルトのNATを設定する方法をご存知の方はいませんか?今はアプリを作成してから、コンテナを編集してネットワーク設定を変更しています。アプリやコンテナを再作成したときに、必要なネットワーク設定がすでに反映されるように、yamlファイル内でネットワークを定義したいです。

こちらをご覧ください

「いいね!」 1

私がPi-Hole(パイホール)で使っている設定はこちらです。かなりうまく動作しています:

networks:
  qnet-network:
    driver_opts:
      iface: eth3
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: eth3
      config:
        - subnet: 192.168.0.0/23
          gateway: 192.168.1.1

インターフェース番号が正しいことを必ず確認してください(番号は0から始まります)。

多くの試行錯誤の末、NPMを動作させることができました。基本的には、Dockerのコマンドラインを使って「backend」という新しいネットワークを作成しました。その後、composeファイルのネットワーク設定を使って、各新しいコンテナアプリにbackendネットワークとnpm backend、そして静的IPを割り当てました。時間ができてきちんとドキュメント化できたら、他の人の参考になるようにDocker Composeのメモ用スレッドを始めようと思います。