@ky61k

Nodejs server запущен на localhost:3000, nginx+laravel — в Docker контейнерах, как настроить nginx что бы site.com/api ссылался на ноду?

Делаю проект на локальной машине.
Node js dev server (create-react-app) запущен без Докера.
В докерах запущена Лара, nginx, php-fpm, MySql (Использовал Laradock)

Хочу использовать Node сервер + Реакт для фронтенда и Laravel для бекенда.
Сложности с настройкой именно на Локальной машине, думаю на VPS проблем не будет
так как там известен ip и в настройках nginx можно указать IP.

А на локальной машине 127.0.0.1 и в контейнере докера тоже самое 127.0.0.1
  • Вопрос задан
  • 932 просмотра
Решения вопроса 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
По умолчанию, сеть для контейнеров работает в режиме --net="bridge", из-за чего прямая коммуникация с хостом будет сложнее. Если сервер на ноде не завернёте в контейнер, действия ниже придётся проводить и для деплоя туда.
В своём форке Laradock:
  1. Добавьте аргумент NODE_SERVER_IP=${DOCKER_HOST_IP} в секции args: для контейнера с nginx в docker-compose.yml
  2. В конфиге сайта перевод на Ноду делайте через proxy_pass $node_upstream;
  3. Добавьте в nginx/Dockerfile : ARG NODE_SERVER_IP=127.0.0.1
  4. Там же к списку команд в RUN ещё одну строку (не забудьте в конце предыдущей \):
    &&  echo "upstream node_upstream { server ${NODE_SERVER_IP}:3000; }" >> /etc/nginx/conf.d/upstream.conf

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ky61k Автор вопроса
В конечном итоге засунул Node сервер в Докер контейнер.
Ответ написан
Ваш ответ на вопрос

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

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