Files
ai-learning-platform/docker-compose.yml
T

75 lines
1.7 KiB
YAML

version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: yuzhiran-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123}
MYSQL_DATABASE: yuzhiran
MYSQL_USER: yuzhiran
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-yuzhiran123}
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: yuzhiran-backend
restart: unless-stopped
ports:
- "4000:4000"
environment:
NODE_ENV: production
PORT: 4000
DATABASE_URL: mysql://yuzhiran:${MYSQL_PASSWORD:-yuzhiran123}@mysql:3306/yuzhiran
JWT_SECRET: ${JWT_SECRET:-yuzhiran-jwt-secret-2024}
volumes:
- ./backend/uploads:/app/uploads
depends_on:
mysql:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--spider", "http://localhost:4000/api/docs"]
interval: 30s
timeout: 10s
retries: 3
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: yuzhiran-frontend
restart: unless-stopped
ports:
- "3000:3000"
environment:
NODE_ENV: production
NEXT_PUBLIC_API_URL: http://localhost:4000
depends_on:
- backend
# Uncomment when Redis is available:
# redis:
# image: redis:7-alpine
# container_name: yuzhiran-redis
# restart: unless-stopped
# ports:
# - "6379:6379"
# volumes:
# - redis_data:/data
volumes:
mysql_data:
# redis_data: