Задать вопрос
@jeruthadam
Я крут

Как настроить docker + nginx для локальной разработки?

Конечная задача - хочу запускать локально фронт приложения (приложение не в докере), пусть на порту 3000, и открывать его по адресу test.loc в браузере. При этом nginx должен крутится в докере, но конфиги читать с локальной директории, чтобы можно было удобно менять конфиги.

Что я сделал: поднял приложение на 3000, добавил 127.0.0.1 test.loc в хостс, сделал локальную директорию для конфигов нджинкса, добавил конфиг:

server {
  listen 80;
  server_name test.loc;

  location / {
    proxy_pass http://127.0.0.1:3000;
  }
}


запустил докер командой
docker run -p 80:80 -v /Users/vasya/nginx/conf.d:/etc/nginx/conf.d:ro -d nginx


К сожалению не сработало, в браузере пишет 502 Bad Gateway (т.е. нджинкс в докере видит конфиг нормально, но не может достучатся до 127.0.0.1:3000 который крутится на хосте (оно и понятно). на этом мои знания докера закончились...

Как настроить под мои хотелки?
  • Вопрос задан
  • 1815 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Вы забыли отключить сетевую изоляцию, добавьте --net=host и уберите --port (оно бесмысленно будет). Естественно 80-й порт на хосте должен быть свободен, в противном случае правьте конфиг nginx для контейнера.
Добавка: если у вас Windows, то loopback будет не доступен, только приложения, слушающие на всех интерфейсах, для этого заведён в докерных днсах адрес host.docker.internal (документация). На Маке доступен loopback по адресу docker.for.mac.localhost, на Windows противоречивые вещи накопал. Как я понял --net=host не нужен в этом случае, но стоит проверить.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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