Перенаправить поддомен в контейнер Docker с помощью NGINX

У меня есть NGINX, настроенный на Centos 7.5, прослушивающий порт 80 и направляющий трафик на сервер Gunicorn. Это основная цель этого сервера, и это локально установленные приложения, никаких контейнеров до сих пор.

теперь я хотел бы запустить некоторые службы в контейнерах Docker и иметь разные поддомены (или, возможно, порты), перенаправляющие трафик в соответствующие контейнеры.

конкретный пример-SVN server

Я очень новое для всей концепции Docker, и отсутствие конкретной документации для некоторых контейнеров действительно смущает меня. Мне удалось добиться некоторого прогресса с этот контейнер SVN сервера. Это команда, которую я использую:
docker run -d --name svn-server -p 80:80 -p 3960:3960 -v /home/svn:/home/svn elleflorio/svn-server

это то, что у меня есть до сих пор:

  • сервер SVN доступен через http://mysite/svn (порт 80).
  • контейнер успешно привязывается к локальному каталогу, сохраняя данные репозитория, даже если контейнер удален, что замечательно.
  • я могу запускать команды в контейнере, создавать пользователей, добавлять репозитории.

это проблемы:

  • я должен был остановить NGINX, так как ему также нужен порт 80.
  • пока не удалось запустить контейнер на другом порту, он не работал, когда я просто пытался изменить -p параметр; я попытался временно отключить SELinux, что не помогло.
  • Если Я можно запустить контейнер на другом порту, я могу перенаправить трафик с поддомена на этот порт, но я уверен, что есть лучшая практика для работы с контейнерами Docker.
  • если мне удастся заставить это работать - как я могу убедиться, что контейнер перезапускается при перезагрузке хоста?
4
задан Shovalt
25.02.2023 3:24 Количество просмотров материала 3323
Распечатать страницу

1 ответ

чтобы контейнер использовал порт 8080 вместо опубликованного порта 80, используйте docker run ... -p 8080:80 .... Первое число-это порт, к которому можно подключиться на хосте, а второе - "родной" порт контейнера. Это соглашение {host}:{container} используется в других местах.

убедитесь, что вы остановили текущий контейнер (docker ps для вывода списка запущенных контейнеров), в противном случае у вас будет устаревший контейнер, использующий порт 80.

перезагрузить контейнер при загрузке, вы можете сделайте systemd сервис, который делает docker run ....

0
отвечен xenoid 2023-02-26 11:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх