...
下記のように、起動した際にカメラが撮影した画像が表示されれば成功です。
...
外部ライブラリを追加する
任意の外部ライブラリを用いる場合はDockerfileを編集します。
Note |
---|
外部ライブラリのビルドにつきましてはサポート対象外となっております。本章に記載の情報を参考に外部ライブラリをビルドしてください。問い合わせいただいてもサポートできかねますので予めご了承ください。 |
Dockerfileについてのドキュメントは以下を参照ください。
日本語: Dockerfile リファレンス — Docker-docs-ja 24.0 ドキュメント
★(英語版作成後に削除)英語: Dockerfile reference | Docker Docs
以下ではi-PROカメラ向けの内容を記載します。
以下にskeleton_sample_appに含まれている下記ファイルをベースに説明します。
${SDK_DIR}
\src\adamapp\skeleton_sample_app\Dockerfile.ext
Code Block |
---|
FROM iprocv5xcontainerregistry.azurecr.io/cadamenv:0.1.0 AS build-env
WORKDIR /app
COPY . ./
WORKDIR /iprosdk
RUN chmod +x setup_env.sh
RUN /bin/bash -c "source setup_env.sh ambaCV5XCEXinternal && \
cd /app && \
make clean && \
make"
# Application environment (arm64v8)
FROM iprocv5xcontainerregistry.azurecr.io/cadamappbase:0.0.2 AS aplbase
RUN useradd -ms /bin/bash moduleuser
WORKDIR /app
COPY --chown=moduleuser:moduleuser --from=build-env /app/configuration.txt /app/
COPY --chown=moduleuser:moduleuser --from=build-env /app/data/ /app/data/
COPY --chown=moduleuser:moduleuser --from=build-env /app/setup/ /app/setup/
COPY --chown=moduleuser:moduleuser --from=build-env /app/bin/ /app/bin/
COPY --chown=moduleuser:moduleuser --from=build-env /app/conf/ /app/conf/
USER moduleuser
CMD ["bash"]
|
1行目から10行目はアプリのビルドを行っています。
1行目のFROMに指定しているイメージはi-PROが提供する開発環境のイメージとなります。カメラで動作するアプリをビルドするためのライブラリ等が含まれていますので、変更しないでください。
4行目では、skeleton_sample_appフォルダ内のすべてのファイル (.dockerignoreに記載したファイルを除く) をビルドイメージ内にコピーしています。
7-10行目で、setup_env.shによる環境設定およびアプリのビルドを実施しています。この行は変更しないでください。
ビルドに必要な独自のOSSを取り込みたい場合は、2-5行目の間に追加してください。以下は、libjpegをインストールする場合の例です。
Code Block #install libJpeg RUN apt update && \ apt install -y libjpeg-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/*
また、OSSをソースコードからビルドしたい場合も同様に追加することができます。以下はEclipse Paho C Client Library for the MQTT Protocolをソースコードからビルドする場合の例です。
Code Block WORKDIR /paho RUN git clone https://github.com/eclipse/paho.mqtt.c.git && \ mkdir /tmp/build.paho && \ cd /tmp/build.paho && \ cmake -DPAHO_WITH_SSL=TRUE /paho/paho.mqtt.c && \ cmake --build .
13行目から25行目はext内に含まれ、実際にカメラ上で動作するイメージのビルド手順です。基本的な流れは、1-10行目でビルドしたバイナリをコピーする形となります。
14行目のFROMに指定しているイメージはi-PROが提供するアプリケーションのベースとなるイメージとなります。カメラでで動作するための必要最小限のファイルが含まれていますので、変更しないでください。
15行目では、カメラ内で動作させるためのユーザーを作成しています。i-PROカメラではroot権限でコンテナを動作させることは禁止されています。
17-21行目は、既にビルドしたバイナリや、必要なファイルをイメージにコピーしています。
23行目で実行ユーザーを15行目で作成した”moduleuser”に設定しています。
25行目では、このイメージの起動時のデフォルトのコマンドを指定しています。実際にはdocker-compose.yamlファイルで、ビルドしたアプリが最初に起動するように上書きされます。
15行目以降で、独自に使用するライブラリがある場合はコピーを行うコードを追加します。以下はlibjpegをコピーするコードの例です。
Code Block # copy libjpeg COPY --from=build-env /usr/lib/aarch64-linux-gnu/libjpeg.so.8.2.2 /usr/lib/aarch64-linux-gnu/ RUN ln -sf /usr/lib/aarch64-linux-gnu/libjpeg.so.8.2.2 /usr/lib/aarch64-linux-gnu/libjpeg.so.8 && \ ln -sf /usr/lib/aarch64-linux-gnu/libjpeg.so.8.2.2 /usr/lib/aarch64-linux-gnu/libjpeg.so
どのファイルをコピーする必要があるかは、ビルドしたバイナリに対してlddコマンドを使用したり、apt-getでインストールした場合は、dpkg -L コマンドを使用したりして調べてください。