Невозможно запустить dog-контейнер postgres из docker-compose - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь запустить докер-контейнер postgresql , версия которого 10.5 .

Но до этого я использовал 9.6 версиюв том же файле docker-compose.yml и в базе данных нет данных.

И теперь, после изменения версии контейнер postgres , я не могу запустить docker-compose up .Выдает следующую ошибку:

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)

Не вызовет ли это проблемы?

1 Ответ

1 голос
/ 28 сентября 2019

Проблема вызвана тем, что том, созданный вами для создания вашей базы данных, по-прежнему хранит старые данные, инициированные PostgreSQL 9.6.Это имя тома postgres-data, созданное при использовании именованного тома на вашем docker-compose.yml.Чтобы просто избавиться от этого, вы можете использовать несколько способов ниже:

  1. Используя команду docker-compose:

Запустите docker-compose down -v, это остановит весь ваш контейнервнутри этой композиции и удалите все именованные тома внутри этой композиции.

Вы можете взглянуть на команду docker-compose down

Используя команду docker volume:

Запустите docker volume ls, чтобы получить список текущих томов на вашем компьютере. Я думаю, вы также увидите свой том в этом списке:

DRIVER              VOLUME NAME
local               postgres-data

Запустите docker volume rm postgres-data, чтобы удалить этот том, если ваш контейнер все еще работает, и вы не можете его удалить, вы можете использовать -f, чтобы принудительно удалить его

Надеюсь, это поможет!

...