簡體   English   中英

Postgres Docker:“postgres:無法訪問服務器配置文件”/var/lib/postgresql/data/postgresql.conf“:沒有這樣的文件或目錄”

[英]Postgres Docker: “postgres: could not access the server configuration file ”/var/lib/postgresql/data/postgresql.conf“: No such file or directory”

我對官方 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顯變量時,值就在那里,所以我認為我不會將 null 值傳遞給 docker 環境變量。

我的主機上的目錄如下所示:

/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 上更是如此。 Docker 在 Mac 上,您有額外的好處是可以通過 VM 運行,因此 docker 正在將您的本地驅動器/路徑映射到 VM,然后將其映射到容器映像中,因此有兩個不同的層可能會出現 Z34D1F91FB2E514B85B76FA 錯誤。

達里奧在他的澄清評論中有正確的想法,你不應該依賴/tmp因為它有 Mac Magic。 它實際上是/var/private/somegarbagestring並且每次啟動都不同。 嘗試切換到/Users/$USER/dbpath文件夾並將數據移動到該文件夾,因此至少您在數據和數據庫之間使用較少的魔法層進行調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM