Size: a a a

pgsql – PostgreSQL

2021 January 14

D

Dmitriy in pgsql – PostgreSQL
Иначе какой смысл в этих данных?
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
a m
Это не «файлик базы», это инициализационная схема. Никаких «изменений» туда сохраняться не будет.
Ок. Понял. Спс.
Что нужно сделать чтобы база в докере работала с данными на хосте и после остановки контейнера эти данные оставались в нужной папке?

На сколько я понял из руководства Докера volumes так и должны работать... Что не так я делаю?
источник

D

Dmitriy in pgsql – PostgreSQL
Vitaliy Snitko
Ок. Понял. Спс.
Что нужно сделать чтобы база в докере работала с данными на хосте и после остановки контейнера эти данные оставались в нужной папке?

На сколько я понял из руководства Докера volumes так и должны работать... Что не так я делаю?
volumes:
     - ./db:/var/lib/postgresql/data/pgdata
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
Dmitriy
volumes:
     - ./db:/var/lib/postgresql/data/pgdata
Я что-то подобное делал + создавал в докер композ раздел volumes.

Так действительно работало всё как надо... В плане - поднял контейнер, поработал с данными, удалил контейнер, создал новый и в нём видна вся прошлая работа с данными...

Но где на винде находятся данные базы я не нашёл...

Где-то в своём volums. Но где он физически - хз..
источник

D

Dmitriy in pgsql – PostgreSQL
Vitaliy Snitko
Я что-то подобное делал + создавал в докер композ раздел volumes.

Так действительно работало всё как надо... В плане - поднял контейнер, поработал с данными, удалил контейнер, создал новый и в нём видна вся прошлая работа с данными...

Но где на винде находятся данные базы я не нашёл...

Где-то в своём volums. Но где он физически - хз..
./db - это означает, что в том же каталоге, где лежит файл docker-compose.yml
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
Dmitriy
./db - это означает, что в том же каталоге, где лежит файл docker-compose.yml
Почему-то так не работало.
При подключении к базе сыпались ошибки.
А если посмотреть на контейнер - то он постоянно перезапускался...
источник

D

Dmitriy in pgsql – PostgreSQL
Папка /var/lib/postgresql/data/pgdata внутри контейнера маппится на ./db. После рестарта контейнера всё сохраняется
источник

D

Dmitriy in pgsql – PostgreSQL
Vitaliy Snitko
Почему-то так не работало.
При подключении к базе сыпались ошибки.
А если посмотреть на контейнер - то он постоянно перезапускался...
Ну так неизвестно, что тут сказать, т.к. неизвестно, какие ошибки сыпались
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
Dmitriy
Папка /var/lib/postgresql/data/pgdata внутри контейнера маппится на ./db. После рестарта контейнера всё сохраняется
Ок. Спс. Завтра ещё попробую. Возможно где-то с синтаксисом затупил.
источник

D

Dmitriy in pgsql – PostgreSQL
Vitaliy Snitko
Ок. Спс. Завтра ещё попробую. Возможно где-то с синтаксисом затупил.
version: '3.7'

services:
 db:
   image: postgres:11.3
   volumes:
     - ./db:/var/lib/postgresql/data/pgdata
   ports:
     - 5439:5432
   environment:
     - POSTGRES_USER=user
     - POSTGRES_PASSWORD=12345
     - PGDATA=/var/lib/postgresql/data/pgdata
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
Dmitriy
version: '3.7'

services:
 db:
   image: postgres:11.3
   volumes:
     - ./db:/var/lib/postgresql/data/pgdata
   ports:
     - 5439:5432
   environment:
     - POSTGRES_USER=user
     - POSTGRES_PASSWORD=12345
     - PGDATA=/var/lib/postgresql/data/pgdata
Благодарю!
Всё один в один как у вас, только вот этого не было :
- PGDATA=/var/lib/postgresql/data/pgdata
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
Dmitriy
version: '3.7'

services:
 db:
   image: postgres:11.3
   volumes:
     - ./db:/var/lib/postgresql/data/pgdata
   ports:
     - 5439:5432
   environment:
     - POSTGRES_USER=user
     - POSTGRES_PASSWORD=12345
     - PGDATA=/var/lib/postgresql/data/pgdata
При таком docker-compose :

db:
   image: postgres:13-alpine
   restart: always
   volumes:
     - ./db:/var/lib/postgresql/data/pgdata
   environment:
     - POSTGRES_PASSWORD=password
     - POSTGRES_USER=postgres
     - POSTGRES_DB=dpt_data
     - DB_HOST=localhost
     - DB_PORT=5435
     - PGDATA=/var/lib/postgresql/data/pgdata
   ports:
     - 5435:5432

Получаю ошибку :
SQLSTATE[08006] [7] could not translate host name "db" to address: Name does not resolve
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
источник

D

Dmitry in pgsql – PostgreSQL
здрасьте. не подскажите почему psql может выдавать unexpected chunk number 1 (expected 0) for toast value ...? пересоздавать БД не хочется ибо это прод
источник

D

Dmitriy in pgsql – PostgreSQL
Vitaliy Snitko
При таком docker-compose :

db:
   image: postgres:13-alpine
   restart: always
   volumes:
     - ./db:/var/lib/postgresql/data/pgdata
   environment:
     - POSTGRES_PASSWORD=password
     - POSTGRES_USER=postgres
     - POSTGRES_DB=dpt_data
     - DB_HOST=localhost
     - DB_PORT=5435
     - PGDATA=/var/lib/postgresql/data/pgdata
   ports:
     - 5435:5432

Получаю ошибку :
SQLSTATE[08006] [7] could not translate host name "db" to address: Name does not resolve
Так тебе нужно хост указывать localhost, а порт 5435
источник

D

Dmitriy in pgsql – PostgreSQL
Ну и DB_PORT у тебя неправильный указан
источник

VS

Vitaliy Snitko in pgsql – PostgreSQL
Dmitriy
Ну и DB_PORT у тебя неправильный указан
Там всё норм. Это я так его замапил.
ports:
     - 5435:5432
источник

D

Dmitriy in pgsql – PostgreSQL
Vitaliy Snitko
Там всё норм. Это я так его замапил.
ports:
     - 5435:5432
А разве DB_PORT=5435 не означает, что у тебя PostgreSQL внутри контейнера запускается на 5435 порту? Если это означает именно это, то почему у тебя в PORTS указан порт 5432?
источник
2021 January 15

VS

Vitaliy Snitko in pgsql – PostgreSQL
Dmitriy
А разве DB_PORT=5435 не означает, что у тебя PostgreSQL внутри контейнера запускается на 5435 порту? Если это означает именно это, то почему у тебя в PORTS указан порт 5432?
Хм.. Внутри контейнер Постгрис на дефолтном 5432, с наружи 5435...  И так работает норм пока не начинаю с volums историю..

Но ок, сейчас сделаю всё по дефолту.. Для чистоты эксперимента.
источник

D

Dmitriy in pgsql – PostgreSQL
Vitaliy Snitko
Хм.. Внутри контейнер Постгрис на дефолтном 5432, с наружи 5435...  И так работает норм пока не начинаю с volums историю..

Но ок, сейчас сделаю всё по дефолту.. Для чистоты эксперимента.
Тогда что означает строка DB_PORT=5435? Ну и, судя по ошибке, ты в качестве хоста при подключении к базе указываешь db. Так прокатит только если ты к базе из контейнера коннектишься, при этом для него links должно указано быть. Но ты ж снаружи к базе пытаешься подключится? Не из докер-контейнера?
источник