![](/img/trans.png)
[英]chown: /var/lib/postgresql/data/postgresql.conf: Read-only file system
[英]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.