...
1行目から12行目はアプリのビルドを行っています。
3行目のFROMに指定しているイメージはi-PROが提供する開発環境のイメージとなります。カメラで動作するアプリをビルドするためのライブラリ等が含まれていますので、変更しないでください。
6行目では、skeleton_sample_appフォルダ内のすべてのファイル (.dockerignoreに記載したファイルを除く) をビルドイメージ内にコピーしています。
10-12行目で、setup_env.shによる環境設定およびアプリのビルドを実施しています。この行は変更しないでください。
ビルドに必要な独自のOSSを取り込みたい場合は、4-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 RUN apt-get update &&\ apt-get install -y build-essential gcc make cmake cmake-gui cmake-curses-gui 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 .
18行目から27行目はext内に含まれ、実際にカメラ上で動作するイメージのビルド手順です。基本的な流れは、1-12行目でビルドしたバイナリをコピーする形となります。
16行目のFROMに指定しているイメージはi-PROが提供するアプリケーションのベースとなるイメージとなります。カメラでで動作するための必要最小限のファイルが含まれていますので、変更しないでください。
17行目では、カメラ内で動作させるためのユーザーを作成しています。i-PROカメラではroot権限でコンテナを動作させることは禁止されています。
19-23行目は、既にビルドしたバイナリや、必要なファイルをイメージにコピーしています。
25行目で実行ユーザーを17行目で作成した”moduleuser”に設定しています。
27行目では、このイメージの起動時のデフォルトのコマンドを指定しています。実際にはdocker-compose.yamlファイルで、ビルドしたアプリが最初に起動するように上書きされます。
17行目以降で、独自に使用するライブラリがある場合はコピーを行うコードを追加します。以下は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 コマンドを使用したりして調べてください。
...