Как запустить Nginx вне контейнера для обслуживания приложений докеров?
У меня есть докер-контейнер, который просто показывает случайные изображения случайных кошек. Образ контейнера находится на сервере, который я использую для своего личного сайта, и я хотел бы добавить в Nginx маршрут, который позволит мне перейти к приложению и увидеть кошку дня.
Используя следующую конфигурацию, я получаю ошибку 404 при попытке перейти кmy_site.com/cats
.
sites-available/my_site.conf
:
server {
listen 443 ssl;
include snippets/my_site-ssl.conf;
include snippets/ssl-params.conf;
server_name my_site.com www.my_site.com;
root /var/www/my_site.com/html;
#working location directives for my_site here...
location = /cats {
proxy_pass https://localhost:5001;
}
}
Докер-контейнер вызывается с помощью:
$ docker run --rm -d -p 5001:5000 --name cats handsomegorilla/cats
Каждая перестановка поиска, которую я выполнял для решения этой проблемы, просто возвращает результаты для некоторого варианта «как запустить nginx в контейнере», что явно не является моей целью здесь.
Я новичок в использовании Docker, поэтому, возможно, мне следует спросить об этом у Stack Overflow, но я решил начать с сервера и вернуться к Docker.
1 ответ
Хорошо, поэтому я решил это, выполнив следующие действия:
я сделал/etc/nginx/conf.d/my_site.conf
:
upstream catApp {
server 127.0.0.1:5001;
}
Я изменил директиву местоположения вsites-available/my_site.com
использовать
# unchanged configuration stuff...
location = /cats {
proxy_pass http://catApp/; #trailing / is important for removing req uri
}
}
Перезагрузил nginx и запустил приложение с помощью
$ docker run --rm -d -p 127.0.0.1:5001:5000 handsomegorilla/cats