Как связать docker + nginx + vite + php?

Для связывания Docker, Nginx, Vite и PHP в проекте на Node.js можно использовать следующий подход:

  1. Создайте Docker-контейнеры для каждой из технологий.
  • Для Node.js и Vite создайте контейнер, базирующийся на образе node:latest, и установите все необходимые зависимости для вашего проекта, включая Vite.
  • Для PHP создайте контейнер, базирующийся на соответствующем образе (например, php:latest) и установите все нужные расширения и зависимости для вашего приложения.
  1. Создайте сеть Docker, которая будет связывать ваши контейнеры и позволять им взаимодействовать.
   docker network create my-network
  1. Определите конфигурацию Nginx для проксирования запросов между Node.js и PHP контейнерами. Вам понадобятся два серверных блока - один для Vite (или любого другого Node.js-сервера), а другой для PHP-FPM. Виртульный сервер Nginx будет принимать все запросы по определенному домену либо по поддомену и перенаправлять их на соответствующий контейнер.

Например, для проксирования запросов в Node.js контейнер, конфигурация Nginx может выглядеть следующим образом:

   server {
     listen       80;
     server_name  example.com;

     location / {
       proxy_pass http://nodejs-container:3000;
       proxy_set_header Host $host;
     }
   }

Для проксирования запросов в PHP контейнер, конфигурация Nginx может выглядеть так:

   server {
     listen       80;
     server_name  api.example.com;

     location / {
       proxy_pass http://php-container:9000;
       proxy_set_header Host $host;
     }
   }
  1. Запустите ваши Docker-контейнеры, подключив их к созданной сети и указав необходимые настройки.
  • Для контейнера Node.js/Vite:
   docker run --name nodejs-container --network my-network -p 3000:3000 -v /путь/к/вашему/приложению:/app your-nodejs-image
  • Для контейнера PHP:
   docker run --name php-container --network my-network -p 9000:9000 -v /путь/к/вашему/приложению:/app your-php-image php-fpm

Обратите внимание на то, что в обоих командах мы пробрасываем локальную директорию с вашим приложением в контейнер.

  1. Убедитесь, что ваше приложение работает правильно. Зайдите в браузере по указанному в конфигурации Nginx домену (или поддомену) и убедитесь, что вам открывается ваше Node.js/Vite приложение, а запросы к API обрабатываются в PHP контейнере.

Таким образом, сочетание Docker, Nginx, Vite и PHP позволяет создать полноценное приложение, используя мощь каждой из этих технологий. Docker обеспечивает изоляцию и масштабируемость, Nginx - проксирование запросов, Vite - разработку фронтенда, а PHP - обработку бэкенда.