Armadilloフォーラム

postgres コンテナやシステムの動作状態に関わらずデータを保持し続けられるようにする

m.yoshida

2024年3月25日 18時41分

armadillo a6eのコンテナでdebian のイメージファイルの中にpostgresをインストールし、データを保持し続けられるようにする方法を教えてください。
/etc/atmark/containers/*.conf のadd_volumesに追加すれば動作するかと思いましたが、エラーが出力されました。
お手数ですが、ご確認いただけますと幸いです。

■Dockerfile

#debian 
FROM docker.io/arm32v7/debian:bullseye
RUN apt-get update -y
RUN apt-get upgrade -y
#systemd
RUN apt-get install -y systemd
RUN ln -s /lib/systemd/systemd /sbin/init
#postgresSQL
RUN apt-get install -y postgresql postgresql-contrib libpq-dev

■/etc/atmark/containers/*.conf

add_volumes /var/app/volumes/postgres:/var/lib/postgresql/13/main

■error

Starting PostgreSQL 13 database server: mainError: Data directory /var/lib/postgresql/13/main must not be owned by root ... failed!
 failed!
コメント

福田様
ありがとうございます。
> https://armadillo.atmark-techno.com/blog/10899/12984
初歩的な質問させていただきます。
コンテナをデータを保存するために、”add_volumes /var/app/volumes/pgsql/:/data/pgsql”以外にも、「postgresql実行のために必要なファイルをコピーする」などの処理を行えば、以下のエラーが解消される認識でよろしいでしょうか?

Starting PostgreSQL 13 database server: mainError: Data directory /var/lib/postgresql/13/main must not be owned by root ... failed!
 failed!

また、上記のURLの場合postgresのOSSをインストールして、設定されてますが、今回のようなdebianOSにpostgresをインストールした際も同じような手法が使えるという認識でよいでしょうか?

お手数をおかけしますが、ご確認お願い致します。

at_takuma.fukuda

2024年3月26日 17時57分

福田です。
当該ブログ記事にも書いているのですが、postgresqlは起動時にデータ保存先に必要なファイルが存在しないと正常に起動しません。
このため、当該ブログでは一度コンテナを作成して、それらの必要なファイルをコンテナからホストOSに予めコピーしておき、
改めて開発用のコンテナを再作成するという手順を踏んでいます。

また、エラーメッセージを見るとマウントしているディレクトリのアクセス権限の問題のようにも見えます。

Debianコンテナへのpostgresqlのインストールについてはこちらでは試していないため、具体的なアドバイスは出来ないのですが、
まずはadd_volumesによるマウントを行わない状態で正常に起動するかを確認した上で、正常に起動しない原因を切り分けながら進めるのが良いのではと思われます。