| services: | |
| # ───────────────────────────────────────────── | |
| # MySQL Database Service | |
| # ───────────────────────────────────────────── | |
| db: | |
| image: mysql:8.0.36 | |
| container_name: ie-mysql-db | |
| environment: | |
| MYSQL_DATABASE: ${MYSQL_DATABASE:-ierepo} | |
| MYSQL_USER: ${MYSQL_USER:-dbuser} | |
| MYSQL_PASSWORD: ${MYSQL_PASSWORD:-dbpassword} | |
| MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword} | |
| ports: | |
| - "3306:3306" | |
| volumes: | |
| - db-data:/var/lib/mysql | |
| networks: | |
| - ierepo-network | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "${MYSQL_USER:-dbuser}", "-p${MYSQL_PASSWORD:-dbpassword}"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 10 | |
| start_period: 30s | |
| # ───────────────────────────────────────────── | |
| # Spring Boot Backend Service (Multi-stage build) | |
| # ───────────────────────────────────────────── | |
| backend: | |
| build: | |
| context: . | |
| dockerfile: infra/Dockerfile | |
| container_name: ie-backend | |
| environment: | |
| SPRING_PROFILES_ACTIVE: prod | |
| DB_URL: jdbc:mysql://db:3306/${MYSQL_DATABASE:-ierepo}?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&characterEncoding=utf8 | |
| DB_USERNAME: ${MYSQL_USER:-dbuser} | |
| DB_PASSWORD: ${MYSQL_PASSWORD:-dbpassword} | |
| DB_DRIVER: com.mysql.cj.jdbc.Driver | |
| DB_DIALECT: org.hibernate.dialect.MySQL8Dialect | |
| JWT_SECRET: ${JWT_SECRET:-404E635266556A586E3272357538782F413F4428472B4B6250645367566B5970} | |
| UPLOAD_DIR: /app/uploads | |
| CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-http://localhost:5173,http://localhost,http://ie-research.local} | |
| depends_on: | |
| db: | |
| condition: service_healthy | |
| ports: | |
| - "9092:9092" | |
| - "9093:9093" | |
| volumes: | |
| - backend-uploads:/app/uploads | |
| - backend-logs:/app/logs | |
| networks: | |
| - ierepo-network | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:9092/actuator/health"] | |
| interval: 15s | |
| timeout: 5s | |
| retries: 5 | |
| start_period: 60s | |
| # ───────────────────────────────────────────── | |
| # React/Vite Frontend Service (Multi-stage Nginx Reverse Proxy) | |
| # ───────────────────────────────────────────── | |
| frontend: | |
| build: | |
| context: ./front | |
| dockerfile: Dockerfile | |
| args: | |
| VITE_API_BASE_URL: ${VITE_API_BASE_URL:-/api} | |
| VITE_WS_URL: ${VITE_WS_URL:-} | |
| VITE_COLLAB_WS_URL: ${VITE_COLLAB_WS_URL:-} | |
| VITE_REAL_API: ${VITE_REAL_API:-true} | |
| VITE_WS_ENABLED: ${VITE_WS_ENABLED:-true} | |
| container_name: ie-frontend | |
| depends_on: | |
| backend: | |
| condition: service_healthy | |
| ports: | |
| - "80:80" | |
| - "5173:80" | |
| networks: | |
| - ierepo-network | |
| restart: unless-stopped | |
| healthcheck: | |
| test: ["CMD", "wget", "-qO-", "http://localhost:80"] | |
| interval: 15s | |
| timeout: 5s | |
| retries: 3 | |
| start_period: 10s | |
| networks: | |
| ierepo-network: | |
| driver: bridge | |
| volumes: | |
| db-data: | |
| backend-uploads: | |
| backend-logs: | |
Xet Storage Details
- Size:
- 3.6 kB
- Xet hash:
- c0d4563b757607c4515670a6f2e806a21954f1ac3d94f58361ff0137ba13d7b8
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.