# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Overview This is a Docker Compose infrastructure configuration repository for the **staging** environment of the dot-dot.ru platform. It contains service configurations, environment files, and deployment scripts. ## Common Commands All commands are run via `./app.sh`: ```bash ./app.sh up # Start all services (docker compose up -d + nginx reload) ./app.sh down # Stop all services ./app.sh init # Initialize environment (requires backup in backups/) ./app.sh db # Open MySQL shell ./app.sh console # Run Symfony console command ./app.sh composer # Run composer in PHP container ./app.sh psalm # Run static analysis ./app.sh php-fixer # Run code style fixer ./app.sh deptrac # Run dependency analysis ./app.sh tests # Run test suite ./app.sh restore-db # Restore database from S3 backup ./app.sh purge-db # Drop and recreate database ``` ## Architecture ### Services (docker-compose.yml) - **backend/php**: Main PHP application (Symfony) with multiple message consumers - **db**: MariaDB 10.3 database - **nginx**: Reverse proxy with SSL termination - **rabbitmq**: Message broker for async processing - **redis**: Caching layer - **centrifugo**: WebSocket server for real-time updates - **lms**: Learning Management System (Node.js) - **admin**: Admin panel (PHP) - **cabinet**: Cargo carrier cabinet (Node.js) - **landing-ttl**: Landing page service - **1c-view**: 1C integration viewer ### Message Consumers The PHP application runs several Symfony Messenger consumers as separate containers: - StatisticExport, OrderImport, ReconciliationAct, WSOrderStateUpdate - UserTrust, SyncAuctions, SyncCarriers, SyncChangeData ### Configuration Structure ``` configs/ ├── nginx/ # Nginx configs and SSL certificates ├── php/ # PHP-FPM config and .env.local ├── rabbitmq/ # RabbitMQ config and definitions ├── lms/ # LMS environment and entrypoint ├── admin/ # Admin panel config ├── cabinet/ # Carrier cabinet config ├── centrifugo/ # WebSocket server config └── signer/ # Digital signature service (currently disabled) ``` ### Environment - Main environment variables are in `.env` - Service image tags are controlled via `dotdot_tag`, `LMS_TAG`, `ADMIN_TAG`, etc. - Network name: `staging` - MySQL port exposed on: `33067` ### Key Files - `.env` - Main environment variables and service tags - `docker-compose.yml` - Service definitions with YAML anchors (`x-defaults-php`) - `configs/php/.env.local` - PHP application environment