회원 가입과 로그인 및 등급별 접근과 공개 범위를 구현했다.`nMIDI 업로드와 검색 및 같은 곡의 버전 묶음을 추가했다.`n비밀번호 변경과 회원 탈퇴 및 관리자 회원 관리를 포함했다.`n직접 만든 공개 샘플 MIDI 네 곡과 운영 문서를 추가했다.
63 lines
2.0 KiB
YAML
63 lines
2.0 KiB
YAML
# Bach to Basics: production-style docker compose
|
|
#
|
|
# Usage:
|
|
# cp .env.example .env # optional, only needed if you want to set BACKEND_API_KEY
|
|
# docker compose up # build + start
|
|
# open http://localhost:5173
|
|
#
|
|
# To enable PDF import via Audiveris, drop audiveris.jar into ./backend/bin/
|
|
# before bringing the stack up, it gets mounted into the backend container.
|
|
#
|
|
# This compose file is for end users who want to RUN the app. For active
|
|
# development with hot reload, use `pnpm dev` directly on your host.
|
|
|
|
services:
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
container_name: piano-bach-backend
|
|
restart: unless-stopped
|
|
expose:
|
|
- "8000"
|
|
environment:
|
|
- ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-https://learn.itosm.co.kr,https://learn.itosm.com}
|
|
- BACKEND_API_KEY_FILE=/run/secrets/backend_api_key
|
|
- REQUIRE_AUTH=1
|
|
- RATE_LIMIT_PER_MIN=${RATE_LIMIT_PER_MIN:-60}
|
|
- MUSIC21_TIMEOUT_S=${MUSIC21_TIMEOUT_S:-60}
|
|
- FINGERING_TIMEOUT_S=${FINGERING_TIMEOUT_S:-120}
|
|
- LIBRARY_DATA_DIR=/data
|
|
- BOOTSTRAP_ADMIN_USERNAME=syskiller
|
|
- BOOTSTRAP_ADMIN_DISPLAY_NAME=관리자
|
|
- BOOTSTRAP_ADMIN_PASSWORD_FILE=/run/secrets/library_admin_password
|
|
volumes:
|
|
# Mount audiveris.jar from host (optional - PDF import is disabled if absent)
|
|
- ./backend/bin:/app/bin:ro
|
|
- ./data:/data
|
|
secrets:
|
|
- backend_api_key
|
|
- library_admin_password
|
|
|
|
frontend:
|
|
build:
|
|
# Root context so the Dockerfile can read pnpm-workspace.yaml + shared/
|
|
context: .
|
|
dockerfile: frontend/Dockerfile
|
|
container_name: piano-bach-frontend
|
|
restart: unless-stopped
|
|
ports:
|
|
- "127.0.0.1:18102:80"
|
|
depends_on:
|
|
- backend
|
|
environment:
|
|
- BACKEND_API_KEY_FILE=/run/secrets/backend_api_key
|
|
secrets:
|
|
- backend_api_key
|
|
|
|
secrets:
|
|
backend_api_key:
|
|
file: ./secrets/backend_api_key
|
|
library_admin_password:
|
|
file: ./secrets/library_admin_password
|