Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions AI-service/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# AI Service Dockerfile for Raspberry Pi 5
# Python 3.10.12 기반

FROM python:3.10.12-slim-bookworm

# 작업 디렉토리
WORKDIR /app

# 시스템 패키지 설치
RUN apt-get update && apt-get install -y \
wget \
curl \
build-essential \
cmake \
git \
libopencv-dev \
python3-opencv \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
libgomp1 \
libatlas-base-dev \
ffmpeg \
mosquitto-clients \
&& rm -rf /var/lib/apt/lists/*

# pip 업그레이드
RUN python3 -m pip install --upgrade pip setuptools wheel

# NumPy 1.x 설치 (2.x 호환성 문제 회피)
RUN python3 -m pip install "numpy<2" --force
77 changes: 77 additions & 0 deletions AI-service/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
version: '3.8'

services:
# MQTT Broker
mqtt_broker:
image: eclipse-mosquitto:2.0
container_name: ambient-mqtt-broker
ports:
- "1883:1883"
- "9001:9001"
volumes:
- ./mqtt-broker/mosquitto.conf:/mosquitto/config/mosquitto.conf
- /var/lib/ambient-node/mqtt/data:/mosquitto/data
- /var/lib/ambient-node/mqtt/log:/mosquitto/log
networks:
- ambient-network
restart: unless-stopped

# Fan Service
fan_service:
image: jiyuniverse/ambient-node-fan-service:arm64
container_name: ambient-fan-service
privileged: true
devices:
- /dev/ttyAMA0:/dev/ttyAMA0
volumes:
- /var/lib/ambient-node:/var/lib/ambient-node
environment:
- MQTT_BROKER=mqtt_broker
- MQTT_PORT=1883
- PYTHONUNBUFFERED=1
networks:
- ambient-network
depends_on:
- mqtt_broker
restart: unless-stopped

# DB Service
db_service:
image: jiyuniverse/ambient-node-db-service:arm64
container_name: ambient-db-service
volumes:
- /var/lib/ambient-node:/var/lib/ambient-node
environment:
- MQTT_BROKER=mqtt_broker
- MQTT_PORT=1883
- DB_PATH=/var/lib/ambient-node/db.sqlite
networks:
- ambient-network
depends_on:
- mqtt_broker
restart: unless-stopped

# AI Service (새로 추가)
ai_service:
image: jiyuniverse/ambient-node-ai-service:arm64 # Docker Hub에 업로드한 이미지
container_name: ambient-ai-service
privileged: true # 카메라 접근 권한
network_mode: host # rpicam-vid TCP 스트림을 위해 호스트 네트워크 사용
volumes:
- /var/lib/ambient-node:/var/lib/ambient-node # 사용자 데이터 공유
environment:
- MQTT_BROKER=localhost # host 네트워크 모드이므로 localhost
- MQTT_PORT=1883
- MODEL_PATH=/models/facenet.tflite
- PYTHONUNBUFFERED=1
- DISPLAY=:0 # 디스플레이 사용 시 (headless 모드면 불필요)
devices:
- /dev/video0:/dev/video0 # 카메라 장치
depends_on:
- mqtt_broker
restart: unless-stopped
command: ["python3", "ai_service.py", "--headless"] # 헤드리스 모드 실행

networks:
ambient-network:
driver: bridge
Binary file added AI-service/facenet.tflite
Binary file not shown.
Loading