【发布时间】:2016-06-11 08:06:22
【问题描述】:
我正在尝试设置一个 PostgreSQL 容器 (https://hub.docker.com/_/postgres/)。我有一些来自当前 PostgreSQL 实例的数据。我从/var/lib/postgresql/data 复制了它,并希望将其设置为 PostgreSQL 容器的卷。
我在 docker-compose.yml 文件中关于 PostgreSQL 的部分:
db:
image: postgres:9.4
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
PGDATA : /var/lib/postgresql/data
volumes:
- /projects/own/docker_php/pgdata:/var/lib/postgresql/data
当我制作 docker-compose up 时,我会收到以下消息:
db_1 | initdb: directory "/var/lib/postgresql/data" exists but is not empty
db_1 | If you want to create a new database system, either remove or empty
db_1 | the directory "/var/lib/postgresql/data" or run initdb
db_1 | with an argument other than "/var/lib/postgresql/data".
我试图从容器中创建自己的镜像,所以我的 Dockerfile 是:
FROM postgres:9.4
COPY pgdata /var/lib/postgresql/data
但是我得到了同样的错误,我做错了什么?
更新
我使用 pg_dumpall 获取了 SQL 并将其放在 /docker-entrypoint-initdb.d 中,但是每次执行 docker-compose up 时都会执行此文件。
【问题讨论】:
-
您是否曾经使用数据卷而不是纯数据容器解决了这个问题?
标签: postgresql docker