Я запускаю свое приложение, используя docker-compose с нижним yml файлом
postgres:
container_name: postgres
image: postgres:${POSTGRES_VERSION}
volumes:
- postgresdata:/var/lib/postgresql/data
expose:
- "5432"
environment:
- POSTGRES_DB=42EXP
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
node:
container_name: node
links:
- postgres:postgres
depends_on:
- postgres
volumes:
postgresdata:
Как вы можете видеть здесь, я использую named volume
для управления состоянием postgres.
Согласно официальным документам, я могу сделать резервную копию тома, как показано ниже
docker run --rm --volumes postgresdata:/var/lib/postgresql/data -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
В некоторых других руководствах я предлагаю функцию pg-dump
предоставляемую postgres для резервного копирования.
pg_dump -Fc database_name_here > database.bak
Думаю, мне нужно будет зайти в контейнер postgres, чтобы выполнить эту функцию, и установить каталог резервного копирования на хост.
Является ли один подход лучше/предпочтительнее другого?