Как запустить 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
      
Другие вопросы по тегам