services: mysql: image: mysql:8.0 container_name: mysql_db restart: always environment: MYSQL_DATABASE: ${DB_NAME:-report_db} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-daoblock12!!} ports: - "3316:3306" volumes: - mysql-data:/var/lib/mysql networks: - report-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"] interval: 5s timeout: 5s retries: 20 start_period: 30s adminer: image: adminer container_name: adminer restart: always # IPv6 비활성 호스트에서 기본 [::]:8080 리슨이 실패하므로 IPv4로 지정 command: ["php", "-S", "0.0.0.0:8080", "-t", "/var/www/html"] ports: # DB 관리툴은 서버 내부에서만 접근 (외부 접근은 SSH 터널 사용) - "127.0.0.1:8083:8080" depends_on: - mysql networks: - report-network backend: build: ./backend container_name: report_backend restart: always ports: - "${BACKEND_PORT:-54530}:3000" environment: - DB_HOST=${DB_HOST:-mysql} - DB_USER=${DB_USER:-root} - DB_PASSWORD=${DB_PASSWORD:-daoblock12!!} - DB_NAME=${DB_NAME:-report_db} - ACCESS_SECRET=${ACCESS_SECRET:-your_jwt_access_secret_123} - REFRESH_SECRET=${REFRESH_SECRET:-your_jwt_refresh_secret_123} - ADMIN_USER=${ADMIN_USER:-kyeongmi} - ADMIN_PASS=${ADMIN_PASS:-kyeongmi} - JEMINI_KEY=${JEMINI_KEY} depends_on: mysql: condition: service_healthy volumes: - ./backend/img:/app/img networks: - report-network frontend: build: ./frontend container_name: report_frontend restart: always ports: - "${FRONTEND_PORT:-55110}:80" depends_on: - backend networks: - report-network postgres: image: postgres:16-alpine container_name: n8n_postgres restart: always environment: POSTGRES_USER: ${POSTGRES_USER:-n8n} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-n8n_password} POSTGRES_DB: ${POSTGRES_DB:-n8n_database} volumes: - postgres-data:/var/lib/postgresql/data networks: - report-network n8n: image: n8nio/n8n:latest container_name: n8n restart: always environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${N8N_DB_NAME:-n8n_database} - DB_POSTGRESDB_USER=${N8N_DB_USER:-n8n} - DB_POSTGRESDB_PASSWORD=${N8N_DB_PASSWORD:-n8n_password} - N8N_PORT=${N8N_PORT:-5678} - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY:-n8n_secret_key_123} ports: - "${N8N_PORT:-5678}:5678" volumes: - n8n-data:/home/node/.n8n depends_on: - postgres networks: - report-network networks: report-network: driver: bridge volumes: mysql-data: postgres-data: n8n-data: