
📦 Docker-инфраструктура проекта
Общая схема Backend
Проект разворачивается в виде набора сервисов через docker-compose.
Основные компоненты:
- Nginx — веб-сервер.
- PHP (Laravel) — backend на PHP 8.2 с Laravel, Supervisor и Vipnet.
- MySQL 8.0 — база данных.
- CloudBeaver — веб-интерфейс для работы с БД.
- MkDocs — документация на базе MkDocs Material.
- Code Server — онлайн-редактор VS Code.
PRODUCTION
Порты которые использует PRODUCTION сборка и описание конфигураций.
Проект разворачивается в виде набора сервисов через docker-compose.
Основные компоненты:
🔹 Nginx - (backend_prod_nginx)
- Порт:
8822 - Хранилища:
./:/var/www— код проекта./docker/gitlab/nginx/prod→/etc/nginx/conf.d— монтирование папки проекта с внутренней конфигурацией nginx внутрь контейнера./docker/gitlab/nginx/html→/usr/share/nginx/html— монтирование папки проекта с внутренней конфигурацией nginx внутрь контейнера- Особенности: зависит от контейнера
php, то есть, пока не запущен контейнер php этот контейнер не запустится
🔹 PHP (Laravel) - (backend_prod_project)
- Образ:
php:8.2-fpm - Хранилища:
./ → /var/www— монтируется весь проект внутрь контейнера./docker/vipnet/config→/root/.vipnet— монтирование конфигурации vipnet внутрь контейнера- Особенности:
- Настроен
supervisord. - Настроен
vipnetclient(установка ключей при старте). privileged: true+NET_ADMIN,SYS_ADMIN(для vipnet).
🔹 CloudBeaver - (backend_prod_cloudbeaver)
- Назначение: админка БД (альтернатива phpMyAdmin).
- Порт:
8978 - Хранилище:
/var/cloudbeaver/workspace→/opt/cloudbeaver/workspace— монтирование папки с конфигами на хосте внутрь контейнера
🔹 MkDocs - (backend_prod_mkdocs)
- Назначение: сервер документации.
- Порт:
5522 - Хранилища:
/var/docs → /docs— монтирование папки с файлами документации внутрь контейнера
🔹 Editor (Code Server) - (backend_prod_editor)
- Назначение: веб-IDE (VS Code в браузере).
- Порт:
5521 - Хранилища:
/var/docs→/home/coder/project— монтирование папки с файлами документации внутрь контейнера
🔹 Frontend - (frontend_prod_nginx)
- Порт
3000
Схема
flowchart LR
%% Пользовательские потоки
subgraph USER["Пользователь"]
User["Пользователь HTTP/HTTPS"]
VipUser["Пользователь через VipNet"]
end
%% Внешний Nginx (host)
subgraph HOST["Хостовая машина"]
ExtNginx["Внешний Nginx (host)"]
end
%% Docker Compose
subgraph DOCKER["Docker Compose"]
IntNginx["Внутренний Nginx (docker)"]
PHP["php-fpm (Laravel)"]
S3["S3 (Object Storage)"]
RemoteDB["Удалённая БД (DBaaS)"]
Frontend["Frontend (node)"]
CloudBeaver["cloudbeaver (dbeaver/cloudbeaver)"]
end
%% VipNet
subgraph VIPNET["VipNet туннель"]
Vipnet["VipNet клиент"]
end
%% Основной поток HTTP/HTTPS
User -->|"443 HTTPS"| ExtNginx
ExtNginx -->|"443 -> фронтенд"| Frontend
Frontend -->|"API 443 HTTPS через внешний Nginx"| ExtNginx
ExtNginx -->|"443 -> внутренний Nginx"| IntNginx
IntNginx -->|"FastCGI 9000"| PHP
PHP -->|"3306 TCP"| RemoteDB
PHP -->|"443 HTTPS"| S3
%% CloudBeaver поток
ExtNginx -->|"443 -> 8978"| CloudBeaver
CloudBeaver -->|"3306 TCP"| RemoteDB
%% VipNet поток
VipUser -->|"VipNet туннель"| Vipnet
Vipnet --> PHP
TEST ( основной )
Порты которые использует TEST сборка и описание конфигураций.
Проект разворачивается в виде набора сервисов через docker-compose.
Основные компоненты:
🔹 Nginx - (backend_test_main_nginx)
- Порт:
8821 - Хранилища:
./:/var/www— код проекта./docker/gitlab/nginx/prod→/etc/nginx/conf.d— монтирование папки проекта с внутренней конфигурацией nginx внутрь контейнера./docker/gitlab/nginx/html→/usr/share/nginx/html— монтирование папки проекта с внутренней конфигурацией nginx внутрь контейнера- Особенности: зависит от контейнера
php, то есть, пока не запущен контейнер php этот контейнер не запустится
🔹 PHP (Laravel) - (backend_test_main_project)
- Образ:
php:8.2-fpm - Хранилища:
./ → /var/www— монтируется весь проект внутрь контейнера- Особенности:
- Настроен
supervisord.
🔹 Frontend - (frontend_test_main_nginx)
- Порт
3001
Схема
flowchart LR
%% Пользовательский доступ
User["Пользователь"] -->|"443 (HTTPS)"| ExtNginx["Внешний Nginx на хосте"]
%% Домены
ExtNginx -->|"443 -> 8821"| IntNginx["Nginx Backend"]
ExtNginx -->|"443 -> 3001"| Frontend["Frontend (node:18.18.2)"]
%% Backend PHP
IntNginx -->|"FastCGI 9000"| PHP["php-fpm (Laravel)"]
PHP -->|"3306 TCP"| RemoteDB["Удалённая БД (DBaaS)"]
PHP -->|"443 HTTPS"| S3["Объектное хранилище S3"]
DEV ( тестовые сервера разработчиков )
Порты которые использует DEV сборка и описание конфигураций.
Проект разворачивается в виде набора сервисов через docker-compose.
Основные компоненты:
🔹 Nginx - (backend_test_1\2\3\4\5_nginx)
- Порты:
8094,8089,8081,8085,8097 - Хранилища:
./:/var/www— код проекта./docker/gitlab/nginx/prod→/etc/nginx/conf.d— монтирование папки проекта с внутренней конфигурацией nginx внутрь контейнера./docker/gitlab/nginx/html→/usr/share/nginx/html— монтирование папки проекта с внутренней конфигурацией nginx внутрь контейнера- Особенности: зависит от контейнера
php, то есть, пока не запущен контейнер php этот контейнер не запустится
🔹 MySQL - (backend_test_1\2\3\4\5_mysql)
- Образ:
mysql:8.0 - Порты:
3309,3308,3406,3307,3310 - Хранилища:
/var/lib/mysql_3306→/var/lib/mysql— данные БД монтируются с хоста в контейнер./docker/mysql/prod/mysql.cnf→/etc/mysql/conf.d/custom.cnf— монтирование папки с внутренней конфигурацией mysql внутрь контейнера- Healthcheck:
mysqladmin ping
🔹 PHP (Laravel) - (backend_test_1\2\3\4\5_project)
- Образ:
php:8.2-fpm - Хранилища:
./ → /var/www— монтируется весь проект внутрь контейнера- Особенности:
- Настроен
supervisord.
🔹 Frontend - (frontend_prod_nginx)
- Порты -
8095,8090,8082,8086,8099
Схема
flowchart LR
%% Пользователь
User["Пользователь"] --> Nginx["nginx (docker:80)"]
%% Docker окружение
subgraph DOCKER["Docker Compose"]
Nginx -->|"FastCGI 9000"| PHP["php-fpm (Laravel)"]
PHP -->|"3306 TCP"| Mysql["MySQL (docker:3306)"]
end
%% Сети
subgraph Networks["Docker сети"]
LaravelNet["laravel-network (bridge)"]
CommonNet["common-network (external)"]
end
%% Подключение сервисов к сетям
Nginx --- LaravelNet
Nginx --- CommonNet
PHP --- LaravelNet
PHP --- CommonNet
Mysql --- LaravelNet
Mysql --- CommonNet