パッケージ依存関係
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.json の target_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 を含むカスタムイメージを使用することができます。