pg_dump服务器和pg_dump版本在docker中不匹配

时间:2017-06-26 21:22:44

标签: postgresql docker docker-compose pg pg-dump

当我在psql --version容器中运行命令railsApp时,我得到9.4.12,当我在postgres容器中运行该命令时,我得到{{1} }。如何才能使版本匹配?

当我尝试在执行9.6.2 sql导入的Rails应用程序上进行迁移时,我收到以下错误。

pg_dump

这是我的Docker-compose.yml文件:

pg_dump: server version: 9.6.2; pg_dump version: 9.4.12
pg_dump: aborting because of server version mismatch
rails aborted!

Dockerfile:

version: "2.1"
services:
  railsApp:
    build:
      context: ./
    ports:
      - "3000:3000"
    links:
      - postgres
    volumes:
      - .:/app
  postgres:
    image: postgres:9.6
    ports:
      - "5432:5432"
    volumes:
      - ./.postgres:/var/lib/postgresql

2 个答案:

答案 0 :(得分:0)

最简单的方法是在docker-compose中使用正确的postgres版本。变化:

  postgres:
    image: postgres:9.6

要:

  postgres:
    image: postgres:9.4.2

所有可用版本here

答案 1 :(得分:0)

对我来说,同样的问题,我使用了另一种方式进行转储,

首先,我访问终端并在docker中运行pd_dump并将文件从docker复制到主机。 下面是命令

docker exec -it <container-id> /bin/bash # accessing docker terminal

pg_dump > ~/dump # taking dump inside the docker

docker cp <container-id>:/root/dump ~/dump #copying the dump files to host

希望以上解决方案有帮助。