Перенаправление nginx/apache для выходного порта на контейнере докера на vps

Я linux noob в админке контейнера докеров, используя apache или nginx на VPS.

Я использую OVH classic Vps (4go ram, 25Go SSD) с уже установленным изображением ubuntu 15.04 + docker.

Установка контейнера докеров очень проста, и в моем случае я без проблем установлю изображение sharelatex.

docker run -d \
  -v ~/sharelatex_data:/var/lib/sharelatex \
  -p 5000:80 \
  --name=sharelatex \
  sharelatex/sharelatex

Сайт доступен по IP-адресу VPS в порту http://51.255.47.40:5000, который показывает, что сайт работает без проблем.

У меня уже есть субдомен (tools.sebastienreycoyrehourcq.fr), сконфигурированный для перехода на сервер ip vps (51.255.47.40, перенаправленный на External в панели webfaction), не работает, не понимаю почему.

Я устанавливаю сервер apache на 51.255.47.40, но я полагаю, что лучший вариант - это, вероятно, установить образ docker nginx или apache? Можете ли вы мне посоветовать по этому поводу? И после этого, как я могу перенаправить на 5000 порт изображения докеров на классический порт 80 apache или nginx, связанный с моим поддоменом?

Ответ 1

Предыдущие ответы, вероятно, охватывают большинство проблем, особенно если были проблемы с перенаправлением вашего доменного имени.

Чтобы быть полностью переносимым и использовать все возможности докера, моя рекомендация состояла бы в том, чтобы использовать официальное изображение докеры Nginx и сделать его единственным доступным извне (с открытием портов) и использовать --link для управления связью между вашими контейнерами Nginx и другими контейнерами.

Я сделал это в аналогичной ситуации, которая работает очень хорошо. Ниже приводится предварительный перевод того, что я сделал с вашей ситуацией.

Вы запускаете свой латексный контейнер share без указания внешнего порта:

docker run -d \
  -v ~/sharelatex_data:/var/lib/sharelatex \
  --name=sharelatex \
  sharelatex/sharelatex

Вы создаете файл конфига nginx для вашего сервера shareLatex, который вы размещаете в $HOME/nginx/conf, который будет выглядеть как

upstream sharelatex {
     # this will refer to the name you pass as link to the nginx container
     server sharelatex; 
}

server {
        listen 80;
        server_name tools.sebastienreycoyrehourcq.fr;
        location  ^~ / {
              proxy_pass http://sharelatex/;
        }
}

Затем вы запускаете свой доккер nginx с соответствующими ссылками на тома и контейнерами:

docker run -d --link sharelatex:sharelatex --name NginxMain -v $HOME/nginx/conf:/etc/nginx/sites-available -v -p 80:80 kekev76/nginx

ps: это было сделано с помощью нашего собственного изображения kekev76/nginx, которое является общедоступным в github и docker, но вы можете адаптировать этот принцип к официальному изображению nginx.

Ответ 2

nginx-proxy (https://github.com/jwilder/nginx-proxy), а затем запустить sharelatex с VIRTUAL_HOST, установленным в tools.sebastienreycoyrehourcq.fr, должно быть достаточно, чтобы получить это работает.

например.

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy

за которым следует

docker run -d \
-e VIRTUAL_HOST=tools.sebastienreycoyrehourcq.fr \
-v ~/sharelatex_data:/var/lib/sharelatex \
-p 5000:80 \
--name=sharelatex \
sharelatex/sharelatex

Ответ 3

Субдомен tools.sebastienreycoyrehourcq.fr не настроен должным образом. Он не разрешает какой-либо IP-адрес, из-за которого он не работает.

После настройки субдомена вы можете запустить контейнер sharelatex на порт 80 с помощью этой команды:

docker run -d \
  -v ~/sharelatex_data:/var/lib/sharelatex \
  -p 80:80 \
  --name=sharelatex \
  sharelatex/sharelatex

Таким образом, вы можете получить доступ к приложению в http://tools.sebastienreycoyrehourcq.fr