📑
(duplicated) Raspberry Pi + Yocto + docker compose
こちらの記事に統合しました。
作りたいもの
こちらの記事で作成したコンテナおよびその他コンテナをdocker-composeを使用して起動します。
docker-composeのインストール
meta-virtualizationにdocker-composeがありますので、これを使います。
local.conf
CORE_IMAGE_EXTRA_INSTALL:append = " docker-compose"
コンテナイメージのビルド・ターゲットイメージへのロード
こちらの記事と同様の手順です。
ターゲット上での自動インポート・起動
composeを使用するということは複数のコンテナイメージをインポートすることがあるので、インポートのスクリプトを変更しました。
- 存在しない場合、1つのコンテナイメージをインポートするスクリプトを分離・作成(ファイル)
- 起動スクリプトから必要なコンテナイメージだけ上記を呼んで、その後
docker compose up
するように変更(ファイル)
compose.yaml
せっかくなのでmongoを起動させてみました。
compose.yaml
services:
sample-api:
image: sample-api:latest
command: /usr/bin/run-sample-api.sh
ports:
- "8080:8080"
restart: unless-stopped
mongo:
image: mongo:4.4.18
ports:
- 27017:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=password
volumes:
- /opt/sample/data/mongo:/data/db
restart: unless-stopped
RasPi4のCPU(BCM2711 = Cortex-A72 = ARMv8-Aマイクロアーキテクチャ)ではMongo 5.xと4.4.19以降は起動できないようなので、4.4.18にしました。RasPi5のCPU(BCM2712 = Cortex-A76 = ARMv8.2-Aマイクロアーキテクチャ)ならlatestで良さそうですが、持っていないので試していません。
mongo-1 | WARNING: MongoDB requires ARMv8.2-A or higher, and your current system does not appear to implement any of the common features for that!
mongo-1 | applies to all versions ≥5.0, any of 4.4 ≥4.4.19
mongo-1 | see https://jira.mongodb.org/browse/SERVER-71772
mongo-1 | see https://jira.mongodb.org/browse/SERVER-55178
mongo-1 | see also https://en.wikichip.org/wiki/arm/armv8#ARMv8_Extensions_and_Processor_Features
mongo-1 | see also https://github.com/docker-library/mongo/issues/485#issuecomment-970864306
mongo-1 |
mongo-1 | /usr/local/bin/docker-entrypoint.sh: line 416: 27 Illegal instruction (core dumped) "${mongodHackedArgs[@]}" --fork
Discussion