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.armv7 | ARMv7 | Raspberry Pi 3/4(32ビット) |
Dockerfile.arm64 | ARM64 | NVIDIA Jetson、RPi 4/5(64ビット) |
Dockerfile.amd64 | AMD64 | 産業用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-stoppeddocker-compose.ymlをルートフォルダにDockerfileの代わりに(または併用して)配置します。ユーザーがデバイス上でアプリを起動・停止すると、Composeスタック全体が一括で管理されます。
Docker Composeにより以下をより細かく制御できます:
- ボリュームマウントとデータ永続化
- サービスネットワーキング
- リソース制限
- マルチコンテナアーキテクチャ
ベストプラクティス
- イメージを小さく保つ — リソースの限られたデバイスでのダウンロード時間を短縮するため、
-slimや-alpineベースイメージを使用してください。 - バージョンを固定する — 再現可能なビルドのため、
latestではなく特定のバージョンタグ(python:3.11-slim)を使用してください。 - レイヤーキャッシュを活用する — Dockerのレイヤーキャッシングを活用するため、アプリケーションコードの前に依存ファイルをコピーしてください。
.dockerignoreを使用する — 不要なファイル(ドキュメント、テスト、.git)をビルドコンテキストから除外してください。
Last updated on