パッケージ依存関係

dependencies.json を使って、アプリに依存パッケージを追加することができます。 actdk build時に、dependencies.json を参照し、必要な依存が入ったアプリイメージがビルドされます。

{
  "apt": [package1, package2,...],
  "pip": [package1, package2,...],
}

たとえばサンプルアプリでは以下のように指定されています。

{
  "apt": [
    "libv4l-0",
    "libv4lconvert0",
    "python3-pil",
    "python3-numpy",
    "fonts-dejavu-core"
  ],
  "pip": ["actfw-raspberrypi"],
}

指定したパッケージは、デフォルトではターゲットタイプに応じて idein/actcast-rpi-app-base:bullseye-3 または idein/actcast-rpi-app-base:bookworm-9 の Docker イメージ上にインストールされます。

apt パッケージ

.apt セクションには、apt を通じてインストールするパッケージ名を記述します。

{
  "apt": [
    "libv4l-0",
    "libv4lconvert0"
  ],
  ...(省略)...
}

これらのパッケージは actdk build 時に apt-get でインストールされます。 デフォルトでは、各ターゲットタイプのベースイメージに設定された apt リポジトリが参照されます。

pip パッケージ

.pip セクションには、pip を通じてインストールする Python の依存パッケージ名を記述します。

{
  ...(省略)...,
  "pip": ["actfw-raspberrypi"],
}

これらのパッケージは actdk build 時に pip install でインストールされます。デフォルトでは、各ターゲットタイプのベースイメージに含まれる Python 3 の環境が使用されます。

カスタムイメージ機能

上記標準の方法でインストールできないパッケージやファイルを追加するにはカスタムイメージ機能が使えます。

dependencies.json の各ターゲットタイプ以下で .base_image セクションに Docker イメージを指定することで、アプリのベースイメージをカスタマイズできます。 ターゲットタイプとして .actdk/setting.jsontarget_types に記述されているものをキーとして利用できます。

{
  "apt": [...(省略)...],
  "pip": [...(省略)...],
  "raspberrypi-bookworm": {
    "base_image": "<repo>:<tag>"
  }
}

重要

この Docker イメージは、actdk コマンドを実行するマシンとビルド先のデバイスから docker pull できる必要があります。

apt パッケージで指定したパッケージは、ここで指定したベースイメージ中の設定を参照してインストールされます。

例: ffmpeg のインストール

例として、apt で提供されているバージョンより新しい FFmpeg をインストールする場合を考えます。以下の Dockerfile は、新しいバージョンの FFmpeg をダウンロードしインストールする手順を示しています。

FROM idein/actcast-rpi-app-base:bookworm-9

RUN apt-get update \
    && apt-get install -y wget xz-utils \
    && apt-get clean \
    && apt-get autoclean \
    && apt-get autoremove -y \
    && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*

RUN wget https://johnvansickle.com/ffmpeg/old-releases/ffmpeg-6.0-arm64-static.tar.xz \
    && tar -Jxvf ffmpeg-6.0-arm64-static.tar.xz \
    && mv ffmpeg-6.0-arm64-static/ffmpeg /usr/local/bin/ \
    && rm -rf ffmpeg-6.0-arm64-static.tar.xz ffmpeg-6.0-arm64-static

この Dockerfile を元に my-org/my-base-image:ffmpeg-6.0 という Docker イメージをビルドした場合、dependencies.json で以下のように指定します。

{
  "apt": [...(省略)...],
  "pip": [...(省略)...],
  "raspberrypi-bookworm": {
    "base_image": "my-org/my-base-image:ffmpeg-6.0"
  }
}

メモ

イメージ名は適切に変更してください。

これにより、アプリは新しいバージョンの FFmpeg を含むカスタムイメージを使用することができます。

最終更新日