【问题标题】:How do I create a Docker file that runs a Caddy server and others on subdomains?如何创建在子域上运行 Caddy 服务器和其他服务器的 Docker 文件?
【发布时间】:2019-06-17 01:17:35
【问题描述】:

我想运行以下服务/docker 映像(在它们各自的子域上)。

╔═══════════╦═════════════════════╦═════════════════════════╗
║  Service  ║         URL         ║         Docker          ║
╠═══════════╬═════════════════════╬═════════════════════════╣
║ Plex      ║    plex.example.com ║ plexinc/pms-docker      ║
║ Calibre   ║ calibre.example.com ║ linuxserver/calibre-web ║
║ NextCloud ║   cloud.example.com ║ nextcloud               ║
║ Gitea     ║     git.example.com ║ gitea/gitea             ║
║ Caddy     ║         example.com ║ abiosoft/caddy          ║
╚═══════════╩═════════════════════╩═════════════════════════╝

我该怎么做?我对 Docker 的经验很少,但了解它在模块化和沙盒方面的好处。我找到了this,但这是特定于 nginx 和 Nextcloud 的。我更喜欢使用 Caddy,因为它具有自动 HTTPS 注册和 HTTP/2 支持。

在路径而不是子域上运行不是首选,但可以接受。

【问题讨论】:

    标签: docker self-hosting caddy


    【解决方案1】:

    我对 Caddy 本身并没有真正的经验,但听起来您想设置一个代理服务器。您要做的是将 Caddy 端口(我假设为 80 和 443)映射到主机(https://docs.docker.com/compose/compose-file/#ports),然后在 Caddy 配置中设置必要的代理转发。

    例如,要将所有请求转发到 plex.example.com,您只需将 plex.example.com 域指向您的服务器,在服务器中,您的 docker-compose(我假设)项目将以 80 和443 个端口映射到 Caddy 服务。然后当请求进入时,您的 Caddy 可以根据域名转发请求。因此,在这种情况下,您将检查对 plex.example.com 的传入请求将它们转发到 plex 服务(在使用 docker 时,您可以使用 plex 服务名称作为主机名。在 docker-compose 命令创建的网络中,服务名称解析为对应的IP地址)

    【讨论】:

      【解决方案2】:

      根据您的描述,所有服务都在同一台机器上运行,但端口不同,如下所示:

      ╔═══════════╦═════════════════════╦═════════════════════════╦═════════════════╗
      ║  Service  ║         URL         ║         Docker          ║      Address    ║ 
      ╠═══════════╬═════════════════════╬═════════════════════════╬═════════════════╣
      ║ Plex      ║    plex.example.com ║ plexinc/pms-docker      ║ localhost:10001 ║
      ║ Calibre   ║ calibre.example.com ║ linuxserver/calibre-web ║ localhost:10002 ║
      ║ NextCloud ║   cloud.example.com ║ nextcloud               ║ localhost:10003 ║
      ║ Gitea     ║     git.example.com ║ gitea/gitea             ║ localhost:10004 ║
      ║ Caddy     ║         example.com ║ abiosoft/caddy          ║ localhost:10000 ║
      ╚═══════════╩═════════════════════╩═════════════════════════╩═════════════════╝
      

      那么您的Caddyfile 可能如下所示:

      example.com {
          proxy / localhost:10000 {
              transparent
          }
      }
      
      plex.example.com {
          proxy / localhost:10001 {
              transparent
          }
      }
      
      calibre.example.com {
          proxy / localhost:10002 {
              transparent
          }
      }
      
      cloud.example.com {
          proxy / localhost:10003 {
              transparent
          }
      }
      
      git.example.com {
          proxy / localhost:10004 {
              transparent
          }
      }
      

      如果您的所有服务都在 Docker 中运行,您可能还需要考虑Traefik

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-04
        相关资源
        最近更新 更多