📑

(duplicated) Raspberry Pi + Yocto + docker compose

に公開

こちらの記事に統合しました。
https://zenn.dev/takumique/articles/975d70fada1d16

作りたいもの

こちらの記事で作成したコンテナおよびその他コンテナをdocker-composeを使用して起動します。
https://zenn.dev/takumique/articles/01d115c0c706d9

docker-composeのインストール

meta-virtualizationにdocker-composeがありますので、これを使います。

local.conf
CORE_IMAGE_EXTRA_INSTALL:append = " docker-compose"

コンテナイメージのビルド・ターゲットイメージへのロード

こちらの記事と同様の手順です。
https://zenn.dev/takumique/articles/01d115c0c706d9#コンテナイメージビルドをターゲットイメージビルドに含め、イメージファイルをターゲットイメージにインストール

ターゲット上での自動インポート・起動

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