# XFlow Server + Consyscab Integration # Объединённая конфигурация для совместного развёртывания services: # ========================================== # 1. Единая база данных PostgreSQL # ========================================== consyscab_db: image: postgres:16-alpine container_name: consyscab_db environment: - POSTGRES_USER=user - POSTGRES_PASSWORD=${DB_PASSWORD:-password} - POSTGRES_DB=symfony_db volumes: - pg_data:/var/lib/postgresql/data - ./docker/postgres/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro networks: - consyscab-network healthcheck: test: ["CMD-SHELL", "pg_isready -U user"] interval: 10s timeout: 5s retries: 5 # ========================================== # 2. PHP 8.4 (Symfony + Moodle) # ========================================== consyscab_php: build: context: ./docker/php container_name: consyscab_php volumes: - ./backend:/var/www/symfony - ./moodle:/var/www/moodle - ./moodledata:/var/www/moodledata - ./docker/php/custom.ini:/usr/local/etc/php/conf.d/custom.ini:ro - ~/.gitconfig:/var/www/.gitconfig:ro depends_on: consyscab_db: condition: service_healthy consyscab_memcached: condition: service_started networks: - consyscab-network # ========================================== # 3. Nginx (Consyscab + XFlow) # ========================================== consyscab_nginx: image: nginx:alpine container_name: consyscab_nginx ports: - "80:80" - "443:443" volumes: - ./backend:/var/www/symfony - ./moodle:/var/www/moodle - ./docker/nginx/conf.d:/etc/nginx/conf.d # XFlow: дополнительная конфигурация - ./xflow/nginx:/etc/nginx/conf.d/xflow:ro - ./xflow/html:/usr/share/nginx/html/xflow:ro depends_on: - consyscab_php - xflow_gitea networks: - consyscab-network # ========================================== # 4. Adminer # ========================================== consyscab_adminer: image: adminer container_name: consyscab_adminer depends_on: - consyscab_db networks: - consyscab-network # ========================================== # 5. Memcached # ========================================== consyscab_memcached: image: memcached:alpine container_name: consyscab_memcached networks: - consyscab-network # ========================================== # 6. Node.js для Quasar # ========================================== consyscab_front: image: node:22-alpine container_name: consyscab_front user: "1000:1000" ports: - "9000:9000" - "9005:9005" working_dir: /app volumes: - ./frontend:/app - ~/.gitconfig:/var/www/.gitconfig:ro environment: - NODE_ENV=development tty: true stdin_open: true networks: - consyscab-network # ========================================== # 7. Mercure Hub # ========================================== consyscab_mercure: image: dunglas/mercure container_name: consyscab_mercure environment: MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_JWT_SECRET:-secret} MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_JWT_SECRET:-secret} ALLOW_ANONYMOUS: 1 networks: - consyscab-network # ========================================== # 8. XFlow Gitea (Git сервер) # ========================================== xflow_gitea: image: gitea/gitea:latest container_name: xflow_gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=postgres - GITEA__database__HOST=consyscab_db:5432 - GITEA__database__NAME=gitea - GITEA__database__USER=user - GITEA__database__PASSWD=${DB_PASSWORD:-password} - GITEA__server__DOMAIN=${GITEA_DOMAIN:-git.localhost} - GITEA__server__ROOT_URL=http://${GITEA_DOMAIN:-git.localhost} - GITEA__server__SSH_DOMAIN=${GITEA_DOMAIN:-git.localhost} - GITEA__server__SSH_PORT=2221 - GITEA__server__SSH_LISTEN_PORT=22 - GITEA__security__INSTALL_LOCK=true - GITEA__security__SECRET_KEY=${GITEA_SECRET_KEY} - GITEA__service__DISABLE_REGISTRATION=false - GITEA__service__REQUIRE_SIGNIN_VIEW=false volumes: - gitea_data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro depends_on: consyscab_db: condition: service_healthy networks: - consyscab-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: consyscab-network: driver: bridge volumes: pg_data: gitea_data: