@YuriyCherniy

Как правильно пробросить порт с Docker контейнера с Django приложением к Nginx установленном на локальном хосте?

Для развертывания применяю docker compose. Часть yml файла выглядит так:
web:
    build: .
    volumes:
      - ./app_data:/app/media/favicon
      - ./static:/app/static
    ports:
      - 8000:8000
    restart: unless-stopped
    depends_on:
      - db

При таком подходе к приложению можно получить доступ как на 80 порту, через Nginx, так и на 8000 в обход Nginx, так как порт проброшен на локальных хост. Если применить такой подход:
expose:
  - 8000

Nginx не видит порт 8000, так как находится вне внутренней сети контейнера. Как правильно пробросить порт с контейнера, чтобы с ним мог работать Nginx и не мог получить доступ пользователь.
  • Вопрос задан
  • 735 просмотров
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Нормальный подход: прописать проброс конкретно на петлевой интерфейс: ports:[127.3.2.1:8000:8000]
Исходя из толстых намёков, вы хотите, чтобы доступ к порту имел только nginx, для этого его надо авторизовывать — через firewall с определением приложения или прокси с авторизацией внутри контейнерной сети.
expose в информации о контейнере указывает, что такие-то порты используются, никаких действий не делается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы