我正在尝试在docker容器中运行postgresql,但是我当然需要使我的数据库数据具有持久性,因此我正在尝试使用仅数据容器来公开卷以在此位置存储数据库。
因此,我的数据容器具有这样的Dockerfile:
FROM ubuntu
# Create data directory
RUN mkdir -p /data/postgresql
# Create /data volume
VOLUME /data/postgresql
我运行的是:
docker run --name postgresql_data lyapun/postgresql_data true
在我的postgresql.conf中,设置:
data_directory = '/data/postgresql'
然后我以这种方式运行我的postgresql容器:
docker run -d --name postgre --volumes-from postgresql_data lyapun/postgresql
我得到:
2014-07-04 07:45:57 GMT FATAL: data directory "/data/postgresql" has wrong ownership
2014-07-04 07:45:57 GMT HINT: The server must be started by the user that owns the data directory.
该如何处理?我在Google上进行了大量搜索,以查找有关将PostgreSQL卷与Docker卷一起使用的信息,但未找到任何信息。
谢谢!
好的,似乎我找到了解决此问题的方法。
而不是以这种方式运行postgres:
CMD ["/usr/lib/postgresql/9.1/bin/postgres", "-D", "/var/lib/postgresql/9.1/main", "-c", "config_file=/etc/postgresql/9.1/main/postgresql.conf"]
我写了bash脚本:
chown -Rf postgres:postgres /data/postgresql
chmod -R 700 /data/postgresql
sudo -u postgres /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c config_file=/etc/postgresql/9.1/main/postgresql.conf
并将Postgresql映像中的CMD替换为:
CMD ["bash", "/run.sh"]
有用!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句