我正在尝试将我的数据保存在/ home / me / redmine中,这样当我的容器停止时,没有数据丢失 . 我正在使用官方的postgres docker hub图像 .
问题是,每次我启动postgres容器时,它会立即退出 . 当我将'data'附加到/ var / lib / postgresql时,这个问题就开始了,否则,在没有添加'data'的情况下,它会启动,但是我的数据没有被保存 . 此外,我在主机上的路径是/var/lib/postgresql/9.4/data,但图像页面说使用/ var / lib / postgresql / data .
以下是我尝试从主机启动/挂载卷的方法:
docker run --name postgres -d \
--env='DB_NAME=redmine_production' \
--env='DB_USER=redmine' \
--env='DB_PASS=secret' \
--volume=/home/me/redmine/postgresql:/var/lib/postgresql/data \
postgres
...然后我将redmine链接如下......
docker run -d -p 3000:3000 --name redmine \
-v /home/me/redmine/files:/usr/src/redmine/files \
--link postgres:postgres redmine
在redmine容器中,/ home / me / redmine / files卷是一个单独的目录,我试图将文件保留在Postgres数据库中的文件之外 .
编辑:
当我进入我的主机/ var / lib / postgresql目录时,我在其中找到9.4 / data然后看到我的/ etc / passwd或/ etc / groups中没有列出所有者和组,并想知道这是不是'与问题有关 .
/var/lib/postgresql/9.4/data # ls -la
total 88
drwx------ 18 70 70 4096 Aug 13 2015 .
drwxr-xr-x 3 root root 4096 Mar 28 2015 ..
drwx------ 8 70 70 4096 Jul 2 2015 base
drwx------ 2 70 70 4096 Jul 2 2015 global
drwx------ 2 70 70 4096 Mar 28 2015 pg_clog
drwx------ 2 70 70 4096 Mar 28 2015 pg_dynshmem
lrwxrwxrwx 1 root root 31 Mar 28 2015 pg_hba.conf -> /etc/postgresql- 9.4/pg_hba.conf
lrwxrwxrwx 1 root root 33 Mar 28 2015 pg_ident.conf -> /etc/postgresql-9.4/pg_ident.conf
drwx------ 4 70 70 4096 Mar 28 2015 pg_logical
drwx------ 4 70 70 4096 Mar 28 2015 pg_multixact
drwx------ 2 70 70 4096 Jul 2 2015 pg_notify
drwx------ 2 70 70 4096 Mar 28 2015 pg_replslot
drwx------ 2 70 70 4096 Mar 28 2015 pg_serial
drwx------ 2 70 70 4096 Mar 28 2015 pg_snapshots
drwx------ 2 70 70 4096 Aug 13 2015 pg_stat
drwx------ 2 70 70 4096 Aug 13 2015 pg_stat_tmp
drwx------ 2 70 70 4096 Mar 28 2015 pg_subtrans
drwx------ 2 70 70 4096 Mar 28 2015 pg_tblspc
drwx------ 2 70 70 4096 Mar 28 2015 pg_twophase
-rw------- 1 70 70 4 Mar 28 2015 PG_VERSION
drwx------ 3 70 70 4096 Mar 28 2015 pg_xlog
-rw------- 1 70 70 88 Mar 28 2015 postgresql.auto.conf
lrwxrwxrwx 1 root root 35 Mar 28 2015 postgresql.conf -> /etc/postgresql-9.4/postgresql.conf
-rw------- 1 70 70 1626 Aug 13 2015 postmaster.log
-rw------- 1 70 70 114 Jul 2 2015 postmaster.opts
思考?
1 回答
首先,这些环境变量看起来很可疑 . 看看documentation for the official Docker image,注意你需要
POSTGRES_DB
,POSTGRES_USER
和POSTGRES_PASSWORD
,而不是DB_NAME
,DB_USER
和DB_PASS
.除此之外,你似乎大多数都在正确的轨道上 . 这是一个完整的例子:
首先,我启动一个Postgres容器 . 我在我的主目录之外的某个地方找到持久性存储,因为您已经注意到文件将不归您所有,这可能会在您的主目录中混淆(尽管不一定有问题):
由于这是我第一次开始指向该数据目录的postgres,我们将看到它初始化数据库:
现在,从另一个窗口,我可以连接到它...
...并创建一些数据:
现在,我退出容器:
我们可以验证它已不再运行:
但是如果我们用相同的命令行参数再次启动它;
我们看到它没有初始化数据库,因为它已经存在,并直接跳到:
此时,我们可以重新连接到数据库并发现我们的数据仍然存在:
这就是它的全部内容 .