В файле my 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
?
ОБНОВЛЕНИЕ 2
Я нашел решение, благодаря Нику! (и еще один друг). Ответ ниже.