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' # 管理網頁端口
      # 可加入其他要暴露的 Stream 端口
      # - '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 的筆記,幫助其他人。