marcoi
1
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
marcoi
2
さまざまなことをテストして、少し進展がありました。
NPMアプリでは、NATとブリッジネットワークを追加する必要があります。ブリッジには静的IPアドレスが割り当てられます。NATは他のコンテナへのアクセスを可能にします。
テスト時には、bashコマンドを実行してnpmコンテナ内でcurlを使い、アクセスを試すことができます。今のところ、コンテナのメインIPアドレス(例:192.x.x.x)を使うとうまくいきませんが、natのIPアドレス(10.0.3.x)を使うと他のコンテナにアクセスできます。コンテナ名はNPM内では機能しないようです。
もう少し試行錯誤すれば、うまく動かせるかもしれません。笑
marcoi
3
yaml composeファイルでデフォルトのNATを設定する方法をご存知の方はいませんか?今はアプリを作成してから、コンテナを編集してネットワーク設定を変更しています。アプリやコンテナを再作成したときに、必要なネットワーク設定がすでに反映されるように、yamlファイル内でネットワークを定義したいです。
NA9D
5
私が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から始まります)。
marcoi
6
多くの試行錯誤の末、NPMを動作させることができました。基本的には、Dockerのコマンドラインを使って「backend」という新しいネットワークを作成しました。その後、composeファイルのネットワーク設定を使って、各新しいコンテナアプリにbackendネットワークとnpm backend、そして静的IPを割り当てました。時間ができてきちんとドキュメント化できたら、他の人の参考になるようにDocker Composeのメモ用スレッドを始めようと思います。