Как мне создать файл Docker, который запускает сервер Caddy и другие на поддоменах? - PullRequest
1 голос
/ 17 июня 2019

Я хотел бы запустить следующие сервисы / образы докеров (на их соответствующих поддоменах).

╔═══════════╦═════════════════════╦═════════════════════════╗
║  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          ║
╚═══════════╩═════════════════════╩═════════════════════════╝

Как я могу это сделать? У меня мало опыта сДокер, но понимаю его преимущества, насколько модульность и песочница.Я нашел это , но это специфично для nginx и Nextcloud.Я бы предпочел использовать Caddy из-за его автоматической регистрации HTTPS и поддержки HTTP / 2.

Запуск по пути вместо поддоменов не является предпочтительным, но будет приемлемым.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

На основании вашего описания все службы работают на одной машине, но имеют разные порты, например:

╔═══════════╦═════════════════════╦═════════════════════════╦═════════════════╗
║  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 .

0 голосов
/ 17 июня 2019

Я не очень разбираюсь в 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 (вы можете использовать имя службы plex).в качестве имени хоста при использовании docker. В сети, созданной командой docker-compose, имена служб разрешаются в соответствующие IP-адреса)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...