tahamajs/IE / Projects /docker-compose.yml
tahamajs's picture
download
raw
3.6 kB
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.