Docker / Postgres:在 dockerized Postgresql 中安装现有数据库

Docker / Postgres: Mounting an existing database within a dockerized Postgresql

所以我在为 Docker Postgres 安装现有数据集时遇到了问题,我一辈子都弄不明白。这是我的 docker 撰写文件。

version: '2'
    services:
      postgresql:
        image: postgres:9.5
        environment:
          - PGDATA=/data 
        ports:
      - '5432:5432'
    volumes:
      - ~/.postgresql:/data
  web:
    build: .
    command: sbt/sbt run
    volumes:
      - .:/app
    ports:
      - '9001:9001'
    depends_on:
      - postgresql

这是我看到的错误

ostgresql_1 | FATAL:  data directory "/data" has wrong ownership
postgresql_1 | HINT:  The server must be started by the user that owns the data directory.

有人知道如何解决吗?谢谢

PS 我正在通过 OSX 使用 Docker 机器,如果这对这个问题有影响的话。

错误信息很清楚。我认为该容器与用户 postgres 一起运行 postgres,它的 uid/gid 为 999(参见 https://github.com/docker-library/postgres/blob/3f8e9784438c8fe54f831c301a45f4d55f6fa453/9.5/Dockerfile 第 5 行)。您需要 chown 您的主机数据文件夹给具有相同 uid.

的用户