Kan*_*naj 15 postgresql docker
我使用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:
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的,我正在使用a named volume来管理postgres状态.
根据官方文档,我可以备份如下的卷
docker run --rm --volumes postgresdata:/var/lib/postgresql/data -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
Run Code Online (Sandbox Code Playgroud)
其他一些教程建议我使用pg-dumppostgres提供的功能进行备份.
pg_dump -Fc database_name_here > database.bak
Run Code Online (Sandbox Code Playgroud)
我想我必须进入postgres容器才能执行此功能并将备份目录挂载到主机.
一种方法比另一种更好/更好吗?
tck*_*tck 42
要运行pg_dump,您可以使用docker exec命令:
要备份:
docker exec -u <your_postgres_user> <postgres_container_name> pg_dump -Fc <database_name_here> > db.dump
删除db(不要在生产中执行,仅用于测试目的!!!):
docker exec -u <your_postgres_user> <postgres_container_name> psql -c 'DROP DATABASE <your_db_name>'
恢复:
docker exec -i -u <your_postgres_user> <postgres_container_name> pg_restore -C -d postgres < db.dump
你也可以使用docker-compose模拟exec.在这种情况下,您可以使用短服务名称(postgres)而不是完整容器名称(composeproject_postgres).
| 归档时间: |
|
| 查看次数: |
13311 次 |
| 最近记录: |