Files
blog-backend/docker-compose.yml
박원엽 3042dc898e
Some checks failed
Deploy Blog Backend / test (push) Successful in 2m6s
Deploy Blog Backend / deploy (push) Failing after 1m8s
Add Maia chess gameplay and deployment
2026-06-19 14:49:20 +09:00

119 lines
3.1 KiB
YAML

services:
# 1. 백엔드 애플리케이션
blog-api:
build: .
container_name: blog-api
restart: always
ports:
- "8080:8080"
environment:
# Database
- SPRING_DATASOURCE_URL=db:5432/blog_db
- SPRING_DATASOURCE_USERNAME=${DB_USER}
- SPRING_DATASOURCE_PASSWORD=${DB_PASS}
- JWT_SECRET=${JWT_SECRET}
- MAIA_ENGINE_URL=http://maia-engine:8000
# Redis
- SPRING_DATA_REDIS_HOST=redis
- SPRING_DATA_REDIS_PORT=6379
# AWS S3 / MinIO (Docker 내부 통신용)
- SPRING_CLOUD_AWS_CREDENTIALS_ACCESS_KEY=admin
- SPRING_CLOUD_AWS_CREDENTIALS_SECRET_KEY=password
- SPRING_CLOUD_AWS_REGION_STATIC=ap-northeast-2
- SPRING_CLOUD_AWS_S3_ENDPOINT=http://minio:9000
# SMTP 메일 설정
- SPRING_MAIL_HOST=smtp.gmail.com
- SPRING_MAIL_PORT=587
- SPRING_MAIL_USERNAME=${MAIL_USER}
- SPRING_MAIL_PASSWORD=${MAIL_PASS}
# SMTP 세부 설정
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH=true
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE=true
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_REQUIRED=true
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_CONNECTIONTIMEOUT=5000
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_TIMEOUT=5000
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_WRITETIMEOUT=5000
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
maia-engine:
condition: service_healthy
networks:
- blog-net
# 2. 데이터베이스 (PostgreSQL)
maia-engine:
build: ./maia-engine
container_name: maia-engine
restart: always
environment:
- MAIA_MODEL=maia3-5m
- MAIA_DEVICE=cpu
- MAIA_USE_AMP=false
- HF_HOME=/models/huggingface
volumes:
- maia_model_cache:/models
healthcheck:
test: [ "CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health', timeout=2).read()" ]
interval: 10s
timeout: 5s
retries: 12
networks:
- blog-net
db:
image: postgres:17-alpine
container_name: blog-db
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASS}
POSTGRES_DB: blog_db
volumes:
- ./postgres_data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${DB_USER} -d blog_db" ]
interval: 5s
retries: 5
networks:
- blog-net
# 3. 캐시 서버 (Redis)
redis:
image: redis:7-alpine
container_name: blog-redis
restart: always
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 5s
retries: 5
networks:
- blog-net
# 4. 오브젝트 스토리지 (MinIO)
minio:
image: minio/minio
container_name: minio
ports:
- "9000:9000" # API 통신
- "9001:9001" # 웹 콘솔
environment:
MINIO_ROOT_USER: "admin"
MINIO_ROOT_PASSWORD: "password"
command: server /data --console-address ":9001"
volumes:
- ./minio_data:/data
networks:
- blog-net
networks:
blog-net:
driver: bridge
volumes:
maia_model_cache: