为什么我的postgres docker容器没有挂载数据库?

时间:2016-04-15 14:24:43

标签: postgresql docker

所以我有两个用于托管postgres服务器的docker镜像。一个用于第一次设置并将.sh和.sql脚本放入相应的目录中以供postgres加载(按预期工作)。第二个映像用于运行已创建数据库的任何其他时间。这些的docker文件如下所示:

FROM postgres:9.3

RUN mkdir -p /etc/postgresql/9.3/main/
RUN echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/9.3/main/pg_hba.conf
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf

ADD Setup.sh /docker-entrypoint-initdb.d/1.sh
ADD schema.sql /docker-entrypoint-initdb.d/2.sql

VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]

FROM postgres:9.3
MAINTAINER Andrew Broadbent <andrew.broadbent@manchester.ac.uk>

RUN mkdir -p /etc/postgresql/9.3/main/
RUN echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/9.3/main/pg_hba.conf
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf

VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]

我从以下shell脚本运行第一个:

# Create the volumes for the data backend database.
docker volume create --name psql-data-etc
docker volume create --name psql-data-log
docker volume create --name psql-data-lib

# Create data store database
echo -e "\n${TITLE}[Data Store Database]${NC}"
read -p " User name: " user
read -s -p " Password: " password
echo ""
read -p " Database name: " dbname
docker run -v psql-data-etc:/etc/postgresql -v psql-data-log:/var/log/postgresql -v psql-data-lib:/var/lib/postgresql -e "NEW_USER=$user" -e "NEW_PASSWORD=$password" -e "POSTGRES_DB=$dbname" -p 9001:5432 -P -d --name psql-data postgres-setup-datastore

我从下面开始运行第二个:

echo -e "\n${TITLE}[Data Store Database]${NC}"
read -p " User name: " user
read -s -p " Password: " password
docker run -v psql-data-etc:/etc/postgresql -v psql-data-log:/var/log/postgresql -v psql-data-lib:/var/lib/postgresql -e "POSTGRES_USER=$user" -e "POSTGRES_PASSWORD=$password" -p 9001:5432 -P --name psql-data postgres-runtime

如果我运行第一个脚本,连接数据库进行一些更改,然后删除容器,然后运行第二个脚本,我对数据库所做的更改不会保留。我该如何坚持下去?我设法让它早点工作,但我不确定我已经改变了什么,似乎无法让它继续工作。

0 个答案:

没有答案