Files
myhome-server/docker-compose.yml
Hyungi Ahn 1a01809a6e feat: 완전한 Tapo 스마트 플러그 백엔드 시스템 구현
 새로운 기능:
- Tapo P110/P100 스마트 플러그 완전 연동
- 동적 기기 관리 (추가/제거/수정)
- 실시간 전력 데이터 수집 API
- 설정 파일 기반 확장 가능한 아키텍처

🔧 기술 개선:
- Docker Compose 파일 통합 (mac-mini 전용 제거)
- MariaDB 설정 최적화 (호환성 문제 해결)
- 포트 구조 개선 (9304-9307 대역 사용)
- Express.js 기반 RESTful API 완성

📚 문서화:
- README 전면 업데이트 (구현된 API 반영)
- Tapo API 엔드포인트 상세 문서화
- 실제 사용 가능한 curl 예제 추가

🗄️ 데이터베이스:
- MariaDB 11 안정화
- Redis 캐시 시스템 구축
- 사용자 권한 모델 준비

🚀 Docker 환경:
- 단일 docker-compose.yml로 통합
- 포트 충돌 해결
- 헬스체크 및 자동 재시작 설정
2025-08-12 10:55:12 +09:00

114 lines
2.7 KiB
YAML

services:
mariadb:
image: mariadb:11-jammy
container_name: home_mariadb
environment:
MYSQL_ROOT_PASSWORD: mac_mini_root_password
MYSQL_DATABASE: home_management
MYSQL_USER: homeuser
MYSQL_PASSWORD: mac_mini_home_password
ports:
- "9305:3306"
volumes:
- mariadb_data:/var/lib/mysql
- ./scripts/setup-db.sql:/docker-entrypoint-initdb.d/setup.sql
- ./config/mariadb.cnf:/etc/mysql/conf.d/custom.cnf
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--innodb-buffer-pool-size=4G
--innodb-log-file-size=512M
--max-connections=200
--query-cache-size=256M
restart: unless-stopped
networks:
- home_network
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: home_phpmyadmin
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
PMA_USER: homeuser
PMA_PASSWORD: mac_mini_home_password
UPLOAD_LIMIT: 2G
MEMORY_LIMIT: 512M
ports:
- "9304:80"
depends_on:
- mariadb
restart: unless-stopped
networks:
- home_network
redis:
image: redis:7-alpine
container_name: home_redis
ports:
- "9307:6379"
volumes:
- redis_data:/data
- ./config/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
restart: unless-stopped
networks:
- home_network
api:
build: .
container_name: home_api
environment:
NODE_ENV: production
DB_HOST: mariadb
DB_PORT: 3306
DB_NAME: home_management
DB_USER: homeuser
DB_PASSWORD: mac_mini_home_password
REDIS_HOST: redis
REDIS_PORT: 6379
JWT_SECRET: mac-mini-production-jwt-secret-key-2025
API_PORT: 3000
API_HOST: 0.0.0.0
CORS_ORIGIN: http://mac-mini-m4.local:3001,http://localhost:3001,http://192.168.1.100:3001
LOG_LEVEL: info
BCRYPT_ROUNDS: 12
ports:
- "9306:3000"
volumes:
- ./logs:/app/logs
- ./uploads:/app/uploads
- /Users/hyungiahn/home-management-data:/app/data
depends_on:
- mariadb
- redis
restart: unless-stopped
networks:
- home_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
mariadb_data:
driver: local
driver_opts:
type: none
o: bind
device: /Users/hyungiahn/home-management-db
redis_data:
driver: local
driver_opts:
type: none
o: bind
device: /Users/hyungiahn/home-management-redis
networks:
home_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16