依存パッケージの追加 #
dependencies.json を使って、アプリに依存パッケージを追加することができます。
actdk build
時に、dependencies.json を参照し、必要な依存が入ったアプリイメージがビルドされます。
{
"apt": [package1, package2,...],
"pip": [package1, package2,...],
}
たとえばサンプルアプリでは以下のように指定されています。
{
"apt": [
"libv4l-0",
"libv4lconvert0",
"python3-pil",
"python3-numpy",
"fonts-dejavu-core",
"libraspberrypi0"
],
"pip": ["actfw-raspberrypi"],
}
指定したパッケージは、デフォルトでは idein/actcast-rpi-app-base:buster-2
の docker イメージ上にインストールされます。
apt パッケージ #
.apt セクションには、apt を通じてインストールするパッケージ名を記述します。
{
"apt": [
"libv4l-0",
"libv4lconvert0",
"libraspberrypi0"
],
...(省略)...
}
これらのパッケージは actdk build
時に apt-get
でインストールされます。
デフォルトでは以下の apt リポジトリが参照されます。
deb http://archive.raspbian.org/raspbian buster main firmware
deb http://archive.raspberrypi.org/debian buster main
pip パッケージ #
.pip セクションには、pip を通じてインストールする Python の依存パッケージ名を記述します。
{
...(省略)...,
"pip": ["actfw-raspberrypi"],
}
これらのパッケージは actdk build
時に pip install
でインストールされます。デフォルトでは Python3.7 の環境が使用されます。
カスタムイメージ機能 #
上記標準の方法でインストールできないパッケージやファイルを追加するにはカスタムイメージ機能が使えます。
dependencies.json の各ターゲットタイプ以下で .base_image セクションに Docker イメージを指定することで、アプリのベースイメージをカスタマイズできます。
ターゲットタイプとして .actdk/setting.json の target_types
に記述されているものをキーとして利用できます。
{
"apt": [...(省略)...],
"pip": [...(省略)...],
"raspberrypi-buster": {
"base_image": "<repo>:<tag>"
}
}
この Docker イメージは、actdk コマンドを実行するマシンと actsim が起動しているマシンから docker pull できる必要があります。
apt パッケージで指定したパッケージは、ここで指定したベースイメージ中の設定を参照してインストールされます。
例: ffmpeg のインストール #
例として、apt で提供されているバージョンより新しい FFmpeg をインストールする場合を考えます。以下の Dockerfile は、新しいバージョンの FFmpeg をダウンロードしインストールする手順を示しています。
FROM idein/actcast-rpi-app-base:buster-2
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/releases/ffmpeg-release-armhf-static.tar.xz \
&& tar -Jxvf ffmpeg-release-armhf-static.tar.xz \
&& mv ffmpeg-6.0-armhf-static/ffmpeg /usr/local/bin/ \
&& rm -rf ffmpeg-release-armhf-static.tar.xz ffmpeg-6.0-armhf-static
この Dockerfile を元に my-org/my-base-image:ffmpeg-6.0
という Docker イメージをビルドした場合、dependencies.json で以下のように指定します。
{
"apt": [...(省略)...],
"pip": [...(省略)...],
"raspberrypi-buster": {
"base_image": "my-org/my-base-image:ffmpeg-6.0"
}
}
イメージ名は適切に変更してください。
これにより、アプリは新しいバージョンの FFmpeg を含むカスタムイメージを使用することができます。