Skip to Content
IoT 앱 개발Docker 및 Compose

Docker 및 Compose

IronFlock 앱은 Docker 이미지로 패키징됩니다. Dockerfile은 애플리케이션 코드의 런타임 환경을 정의합니다.

Dockerfile

모든 앱은 루트 폴더에 Dockerfile이 필요합니다. 이 파일은 기본 이미지에서 시작하여 앱을 위한 Linux 환경을 구성합니다:

FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "main.py"]

전체 구문 참조는 공식 Dockerfile 문서를 참조하십시오.

멀티 아키텍처 지원

다양한 디바이스 아키텍처를 타겟으로 하려면 아키텍처별 Dockerfile을 추가하십시오:

파일아키텍처디바이스 예시
Dockerfile기본 (폴백으로 사용)모든 디바이스
Dockerfile.armv7ARMv7Raspberry Pi 3/4 (32비트)
Dockerfile.arm64ARM64NVIDIA Jetson, RPi 4/5 (64비트)
Dockerfile.amd64AMD64산업용 PC, Intel NUC

릴리스를 빌드할 때 IronFlock은 각 타겟 아키텍처에 맞는 가장 구체적인 Dockerfile을 선택합니다. 아키텍처별 파일이 없으면 기본 Dockerfile이 사용됩니다.

Docker Compose

여러 서비스가 있는 앱(예: 웹 서버 + 데이터베이스 + 워커)의 경우 Docker Compose를 사용하십시오:

# docker-compose.yml version: "3" services: app: build: . volumes: - /data:/data - /shared:/shared ports: - "5000:5000" restart: unless-stopped redis: image: redis:7-alpine restart: unless-stopped

루트 폴더에 docker-compose.yml을 배치합니다. Dockerfile 대신 또는 함께 사용할 수 있습니다. 사용자가 디바이스에서 앱을 시작하거나 중지하면 전체 Compose 스택이 하나의 단위로 관리됩니다.

Docker Compose를 사용하면 다음을 더 세밀하게 제어할 수 있습니다:

  • 볼륨 마운트 및 데이터 지속성
  • 서비스 네트워킹
  • 리소스 제한
  • 다중 컨테이너 아키텍처

모범 사례

  • 이미지를 작게 유지 — 제한된 디바이스에서의 다운로드 시간을 줄이기 위해 -slim 또는 -alpine 기본 이미지를 사용하십시오.
  • 버전 고정 — 재현 가능한 빌드를 위해 latest 대신 특정 버전 태그(python:3.11-slim)를 사용하십시오.
  • 레이어 캐시 활용 — Docker 레이어 캐싱을 활용하려면 애플리케이션 코드보다 의존성 파일을 먼저 복사하십시오.
  • .dockerignore 사용 — 빌드 컨텍스트에서 불필요한 파일(문서, 테스트, .git)을 제외하십시오.
Last updated on