Перенаправление 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