【发布时间】:2020-03-15 02:50:24
【问题描述】:
我想创建我的 psql 数据库的转储。我尝试了以下代码
sudo docker exec -t db pg_dump -c -U "$DATABASE_USER" > $BACKUP_DIR/backup$DATE.sql
但我只得到一个错误,它无法连接到数据库“root”
pg_dump: error: connection to database "root" failed: FATAL: role "root" does not exist
这很好,但我没有在 $DATABASE_USER 中定义 root,所以我想知道它是从哪里来的。 经过一番尝试和错误,我找到了一个有效的代码。
sudo docker exec -t db pg_dump -c -U $(sudo docker exec -it db /bin/sh -c 'printf $DATABASE_USER') > $BACKUP_DIR/backup$DATE.sql
我在 .env 文件中定义了 $DATABASE_USER 并将其放入我的撰写文件中。
env_file:
./.env
编辑: 我稍微改了一下代码,这样就可以不用切换数据库就可以改用户名了
sudo docker exec -t db pg_dump -c -U $(sudo docker exec -it db /bin/sh -c 'printf $DATABASE_USER') -d $(sudo docker exec -it db /bin/sh -c 'printf $DATABASE_NAME') > $BACKUP_DIR/backup$DATE.sql
【问题讨论】:
-
你能分享
DATABASE_USER在你的.env文件中的内容吗? -
目前是“DATABASE_USER=openUser”
标签: linux postgresql docker docker-compose environment-variables