根本的な原因は、pg15でデフォルトの認証ルールが変更されたことかもしれません。
設定ファイルパス: /etc/postgresql/15/main/pg_hba.conf
ファイルの内容は以下の通りです:
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# \"local\" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::/0 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
実行されたバックアップコマンドは次のとおりです:
pg_dump --schema=public -T public.pg_* --file=‘/src/tmp/backups/default/2026-02-02-063003/dump.sql.gz’ --no-owner --no-privileges --verbose --compress=4 --username=postgres discourse_development
上記のコマンドがエラーになるのは、local all postgres peer ルールが原因です: Peer authentication failed for user "postgres"
解決策: peerをtrustに変更し、ローカル環境からのすべてのコマンドを許可します。つまり、すべてのコマンドで検証(パスワード入力も不要)が不要になります。
具体的な手順:
- コンテナ内の
/etc/postgresql/15/main/pg_hba.confをローカルにコピーします
sudo docker cp discourse_dev:/etc/postgresql/15/main/pg_hba.conf ~/discourse/data/pg_hba.conf
権限を644に変更します
sudo chmod 644 ~/discourse/data/pg_hba.conf
data/pg_hba.confの設定を変更します
# Database administrative login by Unix domain socket
local all postgres trust
d/boot_devファイルを変更し、data/pg_hba.confをコンテナにマウントして、pgのデフォルト設定ファイルを上書きします。
docker run -d \
-p $local_publish:8025:8025 \
-p $local_publish:3000:3000 \
-p $local_publish:4200:4200 \
-p $local_publish:9292:9292 \
-p $local_publish:9405:9405 \
-v \"$DATA_DIR:/shared/postgres_data:delegated\" \
# 下記の行が追加されたもので、設定ファイルをコンテナにマウントし、コンテナには読み取り専用権限のみを付与します
-v \"$SOURCE_DIR/data/pg_hba.conf:/etc/postgresql/15/main/pg_hba.conf:ro\" \
-v \"$SOURCE_DIR:/src:delegated\" \
-e UNICORN_BIND_ALL=true \
$mount_plugin_symlinks \
$ENV_ARGS \
--hostname=discourse \
--name=discourse_dev \
--restart=always \
discourse/discourse_dev:release /sbin/boot
- 現在のコンテナを停止・削除し、新しいコンテナを再構築します
d/shotdown_dev
d/boot_dev
- 再構築後、フロントエンドとバックエンドのアプリケーションを起動し、バックアップが正常に機能するかテストします
d/rails s
# 別のコマンドラインで実行
d/ember-cli
バックアップページで、バックアップをクリックし、数秒待ってからバックアップファイルリストを確認します。


