version: '3.8' services: # PostgreSQL 데이터베이스 postgres: image: postgres:15-alpine container_name: sensor-postgres environment: POSTGRES_DB: sensor_db POSTGRES_USER: postgres POSTGRES_PASSWORD: password TZ: Asia/Seoul ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql networks: - sensor-network # Redis 캐시 redis: image: redis:7-alpine container_name: sensor-redis ports: - "6379:6379" volumes: - redis_data:/data networks: - sensor-network # Go 센서 서버 sensor-server: build: context: ./sensor-server dockerfile: Dockerfile container_name: sensor-server environment: - DB_HOST=postgres - DB_PORT=5432 - DB_USER=postgres - DB_PASSWORD=password - DB_NAME=sensor_db - REDIS_HOST=redis - REDIS_PORT=6379 - PORT=8080 - GIN_MODE=release ports: - "8082:8080" depends_on: - postgres - redis networks: - sensor-network restart: unless-stopped # Java 센서 브리지 sensor-bridge: build: context: ./sensor-bridge dockerfile: Dockerfile container_name: sensor-bridge environment: - GO_SERVER_URL=http://sensor-server:8080 ports: - "8020:8020" depends_on: - sensor-server networks: - sensor-network restart: unless-stopped # React 웹 대시보드 web-dashboard: build: context: ./web-dashboard dockerfile: Dockerfile container_name: web-dashboard environment: - REACT_APP_API_URL=http://sensor.geumdo.net/api - REACT_APP_WS_URL=ws://sensor.geumdo.net/ws ports: - "3001:80" depends_on: - sensor-server networks: - sensor-network restart: unless-stopped volumes: postgres_data: redis_data: networks: sensor-network: driver: bridge