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

複数のサービスを持つアプリ(例:Webサーバー + データベース + ワーカー)には、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