Raspberry Pi 4でMongoDBとMongo-Expressを簡単起動するには Podman版

Raspberry Pi 4でmongodbとmongo-expressを起動してみました。OSはUbuntu 20.04.1 LTSのaarch64(64ビット)版になります。

おうちで使っているサービスを、追々Raspberry Piでも動くようにしたいな、という自分用の覚書で恐縮ですが。

Podmanでmongodbとmongo-expressを起動する手順を記録しておこうと思います。


Ubuntu 20.04.1 LTSのインストール

サーバとして長期間安定して使用できるように、microSDカードは使わず、USBストレージからUbuntuを起動しました。


Podmanのインストール

こちらの手順でPodmanをインストールします。


MongoDB, Mongo-express起動設定

※21.1.31追記:

Podmanのバージョンアップの影響で、下記のYAMLファイルではポッドが正常に起動できない場合があります。

その場合、ポッドを手動で作成後、YAMLファイルを出力する必要が御座います。

手順は下記の記事を御覧ください。


ポッドの実行に使用する、Kubernetesのpod.yaml設定ファイルを作成します。

mkdir mongodb
cd mongodb
vi mongo-pod.yaml

次の内容になります。

# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-2.0.6
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2020-09-20T04:27:14Z"
  labels:
    app: mongo-pod
  name: mongo-pod
spec:
  containers:
  - name: mongo-exp
    env:
    - name: ME_CONFIG_MONGODB_SERVER
      value: 127.0.0.1
    - name: ME_CONFIG_MONGODB_ADMINUSERNAME
      value: root
    - name: ME_CONFIG_MONGODB_ADMINPASSWORD
      value: humongous
    image: docker.io/library/mongo-express:latest
    ports:
    - containerPort: 8081
      hostPort: 8081
      protocol: TCP
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    workingDir: /node_modules/mongo-express
  - name: mongo-db
    env:
    - name: MONGO_INITDB_ROOT_USERNAME
      value: root
    - name: MONGO_INITDB_ROOT_PASSWORD
      value: humongous
    image: docker.io/library/mongo:latest
    ports:
    - containerPort: 27017
      hostPort: 27017
      protocol: TCP
    - containerPort: 28017
      hostPort: 28017
      protocol: TCP
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    workingDir: /
    volumeMounts:
    - mountPath: /data/db
      name: db-volume
  volumes:
  - name: db-volume
    hostPath:
      path: /home/ubuntu/mongodb/db
      type: Directory
status: {}

/data/dbディレクトリを永続化しようと思います。ディレクトリ作成後、ポッドを起動します。

mkdir db
sudo podman play kube ./mongo-pod.yaml

このような感じで、Docker Hubの公式mongodbですがaarch64アーキテクチャでかつPodmanで問題なく起動しました。


WebブラウザでMongo-Expressにアクセスしてみます。

http://<Raspberry PiのIPアドレス>:8081

問題なくアクセスできました。

永続化の確認のため、データベースを作成してみます。ポッドを停止・削除して、再度起動してみます。

sudo podman pod stop mongo-pod
sudo podman pod rm mongo-pod
sudo podman play kube ./mongo-pod.yaml

ポッドの起動後、Mongo Expressにアクセスすると、先程作成したデータベースが表示され、ポッドを削除しても消えないことを確認できました。


そうそう、pod.yamlファイルのパスワードですが。いつものヒューマンガス様ぁぁになっていますので、そこは変えておいて下さい。ウェズ・ジョーンズあたりに。

スポンサーリンク

フォローする

スポンサーリンク