Можно ли добавить префикс после порта докера

Я работаю с контейнером докеров для размещения моего проекта angular 4. У меня есть сервер nginx, который является посредником между моим клиентом и моим API. Не удалось найти способ получить доступ к моему внешнему интерфейсу с чем-то вроде этого localhost/coffee.

Вместо рекомендуемого способа доступа к докеру 127.0.0.1:9000

после docker run -p 9000:80 image,

я могу сделать это таким образом для 127.0.0.1:9000/coffee после

docker run -p 9000/coffee:80 image.

У меня есть доступ к местоположению, localhost/coffee, который открыт на порту 9000 на реальном сервере. Мне нужно добавить кофе с префиксом в открытый порт док-станции.


person Ano    schedule 27.09.2017    source источник
comment
Опубликуйте также конфигурацию nginx   -  person Tarun Lalwani    schedule 27.09.2017


Ответы (3)


Вы не можете добавить префикс после порта докера. Вы можете только сопоставить порт. Чтобы получить доступ к внешнему интерфейсу, такому как localhost/coffee, вы можете настроить nginx для обработки этого сценария (настройте местоположение как /coffee и прокси-запрос к вашему внутреннему серверу).

person Girdhar Sojitra    schedule 27.09.2017

@Girdhar Sojitra прав. Вам нужно использовать nginx в качестве обратного прокси. Я хочу добавить некоторое замечание. Jwilder nginx-proxy может автоматически настраивать поддомены для каждого из ваших бэкендов.

person Bukharov Sergey    schedule 27.09.2017

Порт и URL-адрес запроса — это две разные вещи. Порты предназначены для сетевого взаимодействия, а URL-адреса запросов предназначены для веб-сервера. Итак, когда вы бежите

docker run -p 9000:80 image

Если вы получаете приложение, обслуживаемое localhost:9000, и вам нужно изменить его на localhost:9000/coffee, это изменение должно быть в вашем коде или в конфигурации вашего веб-сервера, а не в команде запуска докера.

Простая конфигурация nginx для этого

http{
server {
   listen 80;

   location /coffee/ {
       proxy_pass http://yourbackendcontainer:backendport/;
   }
}

Если вам нужно, чтобы /coffee/ также передавалось как часть URL-адреса вашего бэкэнда, вы должны изменить конфигурацию ниже

http{
server {
   listen 80;

   location /coffee {
       proxy_pass http://yourbackendcontainer:backendport;
   }
}
person Tarun Lalwani    schedule 27.09.2017