{"id":50324982,"url":"https://github.com/pathcosmos/dy_gh_filewallball","last_synced_at":"2026-05-29T05:04:28.132Z","repository":{"id":306852507,"uuid":"1026042693","full_name":"pathcosmos/dy_gh_filewallball","owner":"pathcosmos","description":"dy_gh_filewallball","archived":false,"fork":false,"pushed_at":"2025-08-25T03:42:14.000Z","size":1778,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-25T06:35:53.985Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pathcosmos.png","metadata":{"files":{"readme":"README-Docker.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY_ENHANCEMENT_SUMMARY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-25T08:05:42.000Z","updated_at":"2025-08-25T03:42:17.000Z","dependencies_parsed_at":"2025-07-28T03:27:37.153Z","dependency_job_id":"98d730fc-f6be-4bc6-9738-5663e2fd9a9e","html_url":"https://github.com/pathcosmos/dy_gh_filewallball","commit_stats":null,"previous_names":["pathcosmos/dy_gh_filewallball"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pathcosmos/dy_gh_filewallball","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pathcosmos%2Fdy_gh_filewallball","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pathcosmos%2Fdy_gh_filewallball/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pathcosmos%2Fdy_gh_filewallball/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pathcosmos%2Fdy_gh_filewallball/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pathcosmos","download_url":"https://codeload.github.com/pathcosmos/dy_gh_filewallball/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pathcosmos%2Fdy_gh_filewallball/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33637486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-29T05:04:14.301Z","updated_at":"2026-05-29T05:04:28.121Z","avatar_url":"https://github.com/pathcosmos.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FileWallBall Docker Compose 아키텍처 가이드\n\n## 🐳 **개요**\n\nFileWallBall 애플리케이션을 Docker Compose를 사용하여 컨테이너화된 환경에서 실행하는 방법을 설명합니다.\n\n## 🏗️ **아키텍처 구성**\n\n### **서비스 구성**\n- **MariaDB**: 데이터베이스 서버 (포트: 3306)\n- **FastAPI App**: 메인 애플리케이션 (포트: 8000)\n- **Nginx**: 리버스 프록시 (포트: 80/443)\n- **Redis**: 캐시 서버 (포트: 6379, 개발 환경)\n- **Adminer**: 데이터베이스 관리 도구 (포트: 8080, 개발 환경)\n- **Backup Service**: 백업 및 복구 서비스\n\n### **볼륨 구성**\n- `uploads_data`: 파일 업로드 저장소\n- `logs_data`: 애플리케이션 로그\n- `mariadb_data`: 데이터베이스 데이터\n- `mariadb_backups`: 데이터베이스 백업\n- `backups_data`: 전체 시스템 백업\n- `redis_data`: Redis 캐시 데이터\n\n## 🚀 **빠른 시작**\n\n### **1. 환경 설정**\n```bash\n# 환경변수 파일 복사\ncp .env.example .env\n\n# 환경변수 수정 (필요시)\nDB_ROOT_PASSWORD=your_secure_password\nDB_NAME=filewallball_db\nDB_USER=filewallball_user\nDB_PASSWORD=your_user_password\n```\n\n### **2. 개발 환경 시작**\n```bash\n# 개발 환경 시작 (FastAPI + MariaDB + Redis + Adminer)\ndocker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d\n\n# 백업 서비스 포함 시작\ndocker-compose -f docker-compose.yml -f docker-compose.dev.yml --profile backup up -d\n```\n\n### **3. 프로덕션 환경 시작**\n```bash\n# 프로덕션 환경 시작\ndocker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d\n\n# 백업 서비스 포함 시작\ndocker-compose -f docker-compose.yml -f docker-compose.prod.yml --profile backup up -d\n```\n\n## 📋 **환경별 설정**\n\n### **개발 환경 (docker-compose.dev.yml)**\n- **Hot Reload**: FastAPI 애플리케이션 코드 변경 시 자동 재시작\n- **Adminer**: 웹 기반 데이터베이스 관리 도구\n- **Redis**: 개발용 캐시 서버\n- **포트 노출**: 모든 서비스 포트를 호스트에 노출\n\n### **프로덕션 환경 (docker-compose.prod.yml)**\n- **리소스 제한**: CPU 및 메모리 사용량 제한\n- **보안 강화**: 불필요한 포트 노출 제거\n- **백업 스케줄링**: 자동 백업 스케줄 설정\n- **Nginx SSL**: HTTPS 지원 (설정 필요)\n\n## 🛠️ **관리 명령어**\n\n### **서비스 관리**\n```bash\n# 서비스 상태 확인\ndocker-compose ps\n\n# 서비스 로그 확인\ndocker-compose logs [service_name]\n\n# 서비스 재시작\ndocker-compose restart [service_name]\n\n# 전체 스택 중지\ndocker-compose down\n\n# 전체 스택 중지 (볼륨 포함)\ndocker-compose down -v\n```\n\n### **백업 및 복구**\n```bash\n# 백업 서비스 시작\ndocker-compose --profile backup up -d backup\n\n# 향상된 백업 실행\ndocker exec filewallball-backup scripts/backup-enhanced.sh\n\n# 백업 목록 조회\ndocker exec filewallball-backup scripts/restore-enhanced.sh --list\n\n# 특정 백업 복구\ndocker exec filewallball-backup scripts/restore-enhanced.sh --type database db_backup_full_20250824_225057.sql.gz\n```\n\n### **볼륨 관리**\n```bash\n# 볼륨 백업\n./scripts/backup-volumes.sh\n\n# 볼륨 복구\n./scripts/restore-volumes.sh\n\n# 사용 가능한 백업 목록\n./scripts/restore-volumes.sh --list\n```\n\n## 🔍 **모니터링 및 헬스체크**\n\n### **헬스체크 스크립트**\n```bash\n# 전체 서비스 헬스체크\n./scripts/health-check.sh\n\n# 특정 서비스 헬스체크\n./scripts/health-check.sh mariadb\n./scripts/health-check.sh app\n./scripts/health-check.sh nginx\n./scripts/health-check.sh redis\n```\n\n### **로그 모니터링**\n```bash\n# 실시간 로그 모니터링\n./scripts/log-monitor.sh monitor\n\n# 로그 통계 확인\n./scripts/log-monitor.sh stats\n\n# 로그 분석\n./scripts/log-monitor.sh analyze\n```\n\n### **서비스 매니저**\n```bash\n# 서비스 순차적 시작\n./scripts/service-manager.sh start dev\n\n# 서비스 순차적 중지\n./scripts/service-manager.sh stop dev\n\n# 서비스 상태 확인\n./scripts/service-manager.sh status dev\n```\n\n## 🔒 **보안 설정**\n\n### **컨테이너 보안**\n- `no-new-privileges`: 권한 상승 방지\n- `read_only`: 읽기 전용 파일시스템 (Nginx, Adminer)\n- `tmpfs`: 임시 디렉토리를 메모리 기반으로 설정\n\n### **네트워크 보안**\n- 커스텀 브리지 네트워크 (172.20.0.0/16)\n- 서비스 간 내부 통신만 허용\n- 외부 포트는 환경별로 제한적 노출\n\n## 📊 **성능 최적화**\n\n### **리소스 제한**\n```yaml\n# 프로덕션 환경 예시\ndeploy:\n  resources:\n    limits:\n      cpus: '2.0'\n      memory: 2G\n    reservations:\n      cpus: '1.0'\n      memory: 1G\n```\n\n### **볼륨 최적화**\n- Named Volume 사용으로 데이터 영속성 보장\n- 볼륨 백업 자동화\n- 로그 로테이션 및 정리\n\n## 🚨 **문제 해결**\n\n### **일반적인 문제들**\n\n#### **1. 포트 충돌**\n```bash\n# 사용 중인 포트 확인\nsudo netstat -tlnp | grep :8000\n\n# 기존 프로세스 종료\npkill -f \"uvicorn app.main:app\"\n```\n\n#### **2. 볼륨 마운트 오류**\n```bash\n# 볼륨 상태 확인\ndocker volume ls | grep filewallball\n\n# 볼륨 상세 정보 확인\ndocker volume inspect dy_gh_filewallball_uploads_dev_data\n```\n\n#### **3. 데이터베이스 연결 실패**\n```bash\n# MariaDB 컨테이너 상태 확인\ndocker-compose ps mariadb\n\n# MariaDB 로그 확인\ndocker-compose logs mariadb\n\n# 데이터베이스 초기화 스크립트 재실행\ndocker-compose down -v\ndocker-compose up -d\n```\n\n#### **4. 백업 서비스 오류**\n```bash\n# 백업 컨테이너 상태 확인\ndocker-compose ps backup\n\n# 백업 컨테이너 로그 확인\ndocker-compose logs backup\n\n# 백업 디렉토리 권한 확인\ndocker exec filewallball-backup ls -la /backup/\n```\n\n### **로그 분석**\n```bash\n# 에러 로그 필터링\ndocker-compose logs | grep -i error\n\n# 특정 서비스의 최근 로그\ndocker-compose logs --tail=100 app\n\n# 실시간 로그 모니터링\ndocker-compose logs -f\n```\n\n## 📚 **추가 리소스**\n\n### **Docker Compose 명령어 참조**\n- [Docker Compose 공식 문서](https://docs.docker.com/compose/)\n- [Docker Compose 파일 참조](https://docs.docker.com/compose/compose-file/)\n\n### **MariaDB Docker 가이드**\n- [MariaDB 공식 Docker 이미지](https://hub.docker.com/_/mariadb)\n- [MariaDB Docker 문서](https://mariadb.com/kb/en/docker/)\n\n### **FastAPI Docker 배포**\n- [FastAPI 공식 문서](https://fastapi.tiangolo.com/deployment/docker/)\n- [Uvicorn 설정 가이드](https://www.uvicorn.org/settings/)\n\n## 🤝 **지원 및 피드백**\n\n문제가 발생하거나 개선 사항이 있으면 이슈를 등록해 주세요.\n\n---\n\n**마지막 업데이트**: 2025-08-24\n**버전**: 1.0.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpathcosmos%2Fdy_gh_filewallball","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpathcosmos%2Fdy_gh_filewallball","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpathcosmos%2Fdy_gh_filewallball/lists"}