如何使用卷从 docker 中的转储或 sql 文件恢复数据库?

How to restore database from dump or sql file in docker using volume?

我正在尝试 运行 我在 docker 中的数据库,其中已经有一些数据,但是当我 运行 它在 docker 中时,它给出了空..那么如何在 docker PostgreSQL 映像中恢复我的数据库。

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

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

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

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

希望对您有所帮助。

我在 dockerize Pdi Jobs 时收到此错误。

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

我的docker-撰写文件:

version: '3.1'

services:
  pdijobs:
    image: pdijobs
   restart: always
    build: 
        context: .
        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:
    image: postgres:10
  restart: "no"
    environment:
      POSTGRES_DB: data-warehouse
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: admin
  
volumes:
  postgres-data:
  pgdata: