首页 > 解决方案 > pg_dump 在容器内冻结

问题描述

我有一个 Docker 容器,里面有一个 bash 脚本。bash 脚本执行一个 pg_dump,它在 gsutil 中通过管道传输。这个想法是在 GCP 的云存储中转储一些表。

当我从我的计算机执行脚本时,它可以正常工作,但是当它在我的容器中运行时,它会冻结。我的容器基于 alpine3.9,并且正确安装了 postgresql-client 和 google-cloud-sdk。

这是有问题的脚本的代码片段:

  export PGPASSWORD="${PROD_PASSWORD}"

  /usr/bin/pg_dump --dbname=${PROD_DBNAME} \
                   --host=${PROD_HOSTNAME} \
                   --port=${PROD_PORT} \
                   --username=${PROD_USERNAME} \
                   --blobs \
                   --clean \
                   --create \
                   --encoding=UTF-8 \
                   --if-exists \
                   --insert \
                   --schema config | gsutil cp - gs://${BUCKET_NAME}/${DEST}_${JOB_ID}.sql

容器内的输出:

pg_dump: last built-in OID is 16383
pg_dump: reading extensions
pg_dump: identifying extension members
pg_dump: reading schemas

为什么脚本在容器内外的行为不同?解决办法是什么?

标签: postgresqldockeralpinegsutilpg-dump

解决方案


推荐阅读