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

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

1. Создайте Docker-контейнеры для каждой из технологий.
- Для Node.js и Vite создайте контейнер, базирующийся на образе node:latest, и установите все необходимые зависимости для вашего проекта, включая Vite.
- Для PHP создайте контейнер, базирующийся на соответствующем образе (например, php:latest) и установите все нужные расширения и зависимости для вашего приложения.

2. Создайте сеть Docker, которая будет связывать ваши контейнеры и позволять им взаимодействовать.

   docker network create my-network

3. Определите конфигурацию 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;
     }
   }

4. Запустите ваши 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

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

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

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