gpt4 book ai didi

postgresql - Postgres Docker : "postgres: could not access the server configuration file "/var/lib/postgresql/data/postgresql. conf": 没有这样的文件或目录"

转载 作者:行者123 更新时间:2023-12-02 17:54:14 27 4
gpt4 key购买 nike

我在使用官方 postgres docker 图像时遇到了奇怪的问题。大多数情况下它工作正常,如果我关闭容器并再次启动它,我有时会收到此错误,但并非每次都这样:

PostgreSQL Database directory appears to contain a database; Skipping initialization

postgres: could not access the server configuration file "/var/lib/postgresql/data/postgresql.conf": No such file or directory


我正在使用以下命令启动 postgres 图像:
 export $(grep -v '^#' .env | xargs) && docker run --rm --name postgres \
-e POSTGRES_USER=$POSTGRES_USER \
-e POSTGRES_DB=$POSTGRES_DB \
-e POSTGRES_PASSWORD=$POSTGRES_PASSWORD \
-p $POSTGRES_PORT:$POSTGRES_PORT \
-v $POSTGRES_DEVELOPMENT_DATA:/var/lib/postgresql/data \
postgres


我将变量保存在 .env 文件中,它们看起来像这样:
POSTGRES_USER=custom-db
POSTGRES_DB=custom-db
POSTGRES_PASSWORD=12345678
POSTGRES_PORT=5432
POSTGRES_DEVELOPMENT_DATA=/tmp/custom-db-pgdata

当我尝试 echo 变量时,值就在那里,所以我认为我不会将空值传递给 docker env 变量。

我主机上的目录如下所示:
/tmp/custom-db-pgdata
├── base
│   ├── 1
│   ├── 13407
│   ├── 13408
│   └── 16384
├── global
├── pg_logical
├── pg_multixact
│   ├── members
│   └── offsets
├── pg_notify
├── pg_stat
├── pg_stat_tmp
├── pg_subtrans
├── pg_wal
│   └── archive_status
└── pg_xact

最佳答案

如果在同一台机器和同一个 session 上的执行之间的工作方式不一致(也就是没有重新启动),那么某些东西没有正确映射您的目录。找出破坏性的东西会很困难,尤其是因为您使用的是 Mac。 Mac 上的 Docker 有一个额外的好处是通过 VM 运行,因此 Docker 会将您的本地驱动器/路径映射到 VM,然后将其映射到容器镜像中,因此有两个不同的层可能会出错。

达里奥在他的澄清评论中有正确的想法,你不应该依赖 /tmp因为它也有 Mac Magic。它实际上是 /var/private/somegarbagestring并且每次启动都不同。尝试切换到 /Users/$USER/dbpath文件夹并将您的数据移动到该文件夹​​中,所以至少您在调试数据和数据库之间少了一层魔法。

关于postgresql - Postgres Docker : "postgres: could not access the server configuration file "/var/lib/postgresql/data/postgresql. conf": 没有这样的文件或目录",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61558716/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com