goldenChat base source add
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# GoldenChart — Docker Compose
|
||||
# 실행: docker compose up --build
|
||||
# 중지: docker compose down
|
||||
# 데이터 완전 삭제: docker compose down -v
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
networks:
|
||||
goldenchart-net:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
driver: local
|
||||
|
||||
services:
|
||||
|
||||
# ── MySQL 8.0 ────────────────────────────────────────────────────────────
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
container_name: gc-mysql
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE:-stockAnalyzer}
|
||||
MYSQL_USER: ${MYSQL_USER:-stock}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-analyzer}
|
||||
ports:
|
||||
- "${MYSQL_PORT:-3306}:3306"
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
- ./docker/mysql/init:/docker-entrypoint-initdb.d:ro
|
||||
command: >
|
||||
--character-set-server=utf8mb4
|
||||
--collation-server=utf8mb4_unicode_ci
|
||||
--default-time-zone=+09:00
|
||||
--innodb-buffer-pool-size=256M
|
||||
--max-connections=200
|
||||
--binlog-expire-logs-seconds=86400
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost",
|
||||
"-u", "${MYSQL_USER:-stock}", "-p${MYSQL_PASSWORD:-analyzer}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 40s
|
||||
networks:
|
||||
- goldenchart-net
|
||||
|
||||
# ── Spring Boot Backend ──────────────────────────────────────────────────
|
||||
backend:
|
||||
build:
|
||||
context: . # 루트를 컨텍스트로 (ta4j-master 포함)
|
||||
dockerfile: backend/Dockerfile
|
||||
container_name: gc-backend
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: docker
|
||||
DB_URL: "jdbc:mysql://mysql:3306/${MYSQL_DATABASE:-stockAnalyzer}?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true"
|
||||
DB_USERNAME: ${MYSQL_USER:-stock}
|
||||
DB_PASSWORD: ${MYSQL_PASSWORD:-analyzer}
|
||||
# 업비트 API 키 DB 암호화 (운영 환경에서 반드시 변경)
|
||||
GC_SECRETS_ENCRYPTION_KEY: ${GC_SECRETS_ENCRYPTION_KEY:-goldenchart-local-dev-key-change-me}
|
||||
ports:
|
||||
- "${BACKEND_PORT:-8080}:8080"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -qO- http://localhost:8080/api/indicators/list || exit 1"]
|
||||
interval: 15s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 60s
|
||||
networks:
|
||||
- goldenchart-net
|
||||
|
||||
# ── React Frontend (Nginx) ───────────────────────────────────────────────
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
VITE_API_BASE_URL: /api
|
||||
container_name: gc-frontend
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
backend:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "${FRONTEND_PORT:-80}:80"
|
||||
networks:
|
||||
- goldenchart-net
|
||||
Reference in New Issue
Block a user