如何使用卷从Docker中的转储或SQL文件还原数据库?

时间:2019-10-30 10:27:46

标签: postgresql docker docker-compose docker-volume

我正在尝试在已经有一些数据的docker中运行我的数据库,但是当我在docker中运行它时,它会显示为空..那么如何在docker PostgreSQL映像中还原我的数据库。

2 个答案:

答案 0 :(得分:0)

首先,启动您的docker posgtres容器。然后执行以下命令:

docker exec -i <CONTAINER> -U <USER> -d <DB-NAME> < <PATH-TO-DUMP>

  • <CONTAINER>:容器ID或容器名称
  • <USER>:PostgreSQL DBMS的用户。如果您使用没有特定配置的标准postgres图像,则用户为postgres
  • <DB-NAME>:数据库的名称。该数据库应该已经存在。您可以在运行postgres容器时通过指定一个名为POSTGRES_DB
  • 的环境变量来创建数据库。
  • <PATH-TO-DUMP>:在此处指定转储文件的路径

示例: docker exec -i mypostgres psql -U postgres -d mydb < backup.sql

希望这会有所帮助。

答案 1 :(得分:0)

当我对Pdi Jobs进行docker化时,出现此错误。

错误(版本8.3.0.0-371,由buildguy于2019-06-11 11.09.08生成8.3.0.0-371):发生错误,处理将停止: 2019/10/31 05:02:03-表input.0-尝试连接数据库时发生错误 2019/10/31 05:02:03-表输入0- 2019/10/31 05:02:03-表input.0-连接数据库时出错:(使用org.postgresql.Driver类) 2019/10/31 05:02:03-表input.0-拒绝连接到localhost:5432。检查主机名和端口是否正确以及邮局主管正在接受TCP / IP连接。 2019/10/31 05:02:03-表output.0-错误(版本8.3.0.0-371,由buildguy从2019-06-11 11.09.08生成8.3.0.0-371):初始化该步骤时发生错误:

我的docker-compose文件:

版本:“ 3.1”

服务:   pdijobs:     图片:pdijobs    重启:总是     建立:         内容:。         dockerfile:Dockerfile

volumes:
- ./data/jasper-data:/usr/local/tomcat/webapps
ports:
  - "8080:8080"
depends_on:
  - datawarehouse-db
environment:
  DB_TYPE: postgresql
  DB_HOST: datawarehouse-db
  DB_NAME: data-warehouse
  DB_USER: postgres
  DB_PASSWORD: admin

datawarehouse-db:     图片:postgres:10   重新启动:“否”     环境:       POSTGRES_DB:数据仓库       POSTGRES_USER:postgres       POSTGRES_PASSWORD:管理员

卷:   postgres数据:   pgdata: