簡體   English   中英

無法從 docker-compose 啟動 postgres docker 容器

[英]Unable to start postgres docker container from docker-compose

我正在嘗試啟動版本為10.5postgresql docker 容器。

但在此之前,我在同一個 docker-compose.yml 文件中使用了9.6版本,並且數據庫中沒有填充任何數據。

現在更改postgres 容器的版本后,我無法運行docker-compose 它拋出以下錯誤。

FATAL:數據庫文件與服務器不兼容

詳細信息:數據目錄由 PostgreSQL 版本 9.6 初始化,與此版本 10.5 (Debian 10.5-2.pgdg90+1) 不兼容

這就是 docker-compose.yml 文件的樣子。

version: '2'

services:

  postgres_service:
   container_name: postgresql_container
   restart: always
   image: postgres:10.5
   volumes:
     - postgres-data:/var/lib/postgresql/data
     - ./postgresql/init:/docker-entrypoint-initdb.d
   ports:
     - "5432:5432"
   environment:
     - POSTGRES_USER=admin
     - POSTGRES_PASSWORD=password
volumes:
  postgres-data:
    driver: local

有人可以讓我知道問題出在哪里嗎? 我在哪里犯錯? 在繼續使用新的 postgres 版本之前,我是否需要刪除任何卷?

我的本地也安裝了 postgresql。

postgres=# select version();
                                                               version                                                               
-------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.10 (Ubuntu 10.10-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit
(1 row)

這會導致任何問題嗎?

導致問題的原因是您為存儲數據庫創建的卷仍然保留由PostgreSQL 9.6啟動的舊數據。 該卷名是您在docker-compose.yml上使用命名卷時創建的postgres-data 因此,為了擺脫這種情況,您可以使用以下一些方法:

  1. 使用docker-compose命令:

運行docker-compose down -v ,這將停止該組合內的所有容器並刪除該組合內的所有命名卷。

你可以看看docker-compose down 命令

  1. 使用docker volume命令:

運行docker volume ls以獲取您機器上當前卷的列表,我想您也會在該列表中看到您的卷:

DRIVER              VOLUME NAME
local               postgres-data

運行docker volume rm postgres-data以刪除該卷,如果您的容器仍在運行並且您無法刪除它,那么您可以使用-f強制刪除它

希望有幫助!

對我有用的是刪除項目根目錄中的pgdata文件夾並運行docker-compose build -d 然后它告訴我

/usr/local/bin/docker-entrypoint.sh: /docker-entrypoint-initdb.d/create-multiple-postgres-databases.sh: /bin/bash: bad interpreter: Permission denied

為了修復它,我跑了

chmod +x pg-init-scripts/create-multiple-postgresql-databases.sh

請注意,.sh 文件名應該與您擁有的文件名相匹配。 最后, docker-compose up -d

暫無
暫無

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

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