88d069fe86
Deploy / deploy (push) Successful in 20s
- backend가 mysql 초기화 완료(healthy) 후에 기동하도록 depends_on 조건 추가 - adminer: IPv6 비활성 호스트에서 리슨 실패하던 것을 0.0.0.0 리슨으로 수정, 포트를 127.0.0.1로 바인딩해 외부 노출 차단 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
113 lines
2.9 KiB
YAML
113 lines
2.9 KiB
YAML
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: |