Как задать директорию для данных postgresql за пределами docker контейнера
Есть файл docker-compose.yaml запускающий группу контейнеров и контейнер с Postgres в том числе.
Как я понял, задавая параметр volumes, я могу задать ассоциацию между директорией за пределами контейнера, и данными самого Postgres внутри контейнера:
volumes:
- dbdata:/var/lib/postgresql/data
Но при попытке пройти по пути /var/lib/postgresql/data на машине хоста я не нахожу никаких данных.
docker-compose.yaml целиком:
version: "3.7"
services:
db:
image: postgres
restart: always
volumes:
- dbdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 1
POSTGRES_DB: statistic
ports:
- 5432:5432
api:
build: api/
restart: always
depends_on:
- db
links:
- db
ports:
- 8083:8080
ui:
build: ui/
restart: always
ports:
- 8082:80
volumes:
dbdata: {}
Почему в
/var/lib/postgresql/dataнет данных, что я не так понял, что на самом деле означает записьdbdata:/var/lib/postgresql/data?Что на самом деле происходит при
volumes: dbdata: {}Как мне создать адекватную ссылку на машину хоста при помощи
docker-compose.yamlтак, что-бы я мог найти там данные БД?
Ответы (2 шт):
dbdata:/var/lib/postgresql/data
означает, что данные в контейнере по пути /var/lib/postgresql/data будут храниться в volume dbdata
Надо сделать:
- /var/lib/postgresql/data:/var/lib/postgresql/data
что бы данные из контейнера по пути /var/lib/postgresql/data фактически сохранялись в локальной файловой системе по такому же пути.
- путь_в_локальной_системе:путь_в_докере
У тебя в /var/lib/postgresql/data могут не сохраняться данные из-за доступа,дай своему пользователю linux права sudo