Как сохранить данные в докеризованной базе данных postgres, используя тома
Мой файл docker compose содержит три контейнера: web, nginx и postgres. Postgres выглядит так:
postgres:
container_name: postgres
restart: always
image: postgres:latest
volumes:
- ./database:/var/lib/postgresql
ports:
- "5432:5432
Моя цель - смонтировать том, который соответствует локальной папке с именем./database
внутри контейнера Postgres как/var/lib/postgres
, Когда я запускаю эти контейнеры и вставляю данные в postgres, я проверяю, что/var/lib/postgres/data/base/
заполнен данными, которые я добавляю (в контейнере postgres), но в моей локальной системе./database
только получаетdata
папка в нем, т.е../database/data
создан, но пуст. Зачем?
Заметки:
Это говорит о том, что мой файл должен работать.Этот человек пользуется услугами докера, что интересноОБНОВЛЕНИЕ 1По предложению Ника, я сделалdocker inspect
и нашел:
"Mounts": [
{
"Source": "/Users/alex/Documents/MyApp/database",
"Destination": "/var/lib/postgresql",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
{
"Name": "e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35",
"Source": "/var/lib/docker/volumes/e5bf22471215db058127109053e72e0a423d97b05a2afb4824b411322efd2c35/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
Это создает впечатление, что данные украдены другим томом, который я сам не кодировал. Не уверен, почему это так. Является ли изображение postgres тем объемом для меня? Если да, есть ли способ использоватьэтот объем вместо громкости я монтирую при перезагрузке? В противном случае, есть ли хороший способ отключить этот другой том и использовать мой собственный,./database
?
Я нашел решение, благодаря Нику! (и еще один друг) Ответ ниже.