簡體   English   中英

帶有docker的Postgresql:FATAL:無法讀取目錄的權限:權限被拒絕

[英]Postgresql with docker: FATAL: could not read permissions of directory: Permission denied

我正在嘗試將postgresql服務器泊塢窗化,同時將數據保留在主機上。 我的容器可以正常運行而無需從主機上裝入卷,但是由於這些卷的權限,它會崩潰:

FATAL: could not read permissions of directory "/var/lib/postgresql/9.4/main": Permission denied

我的docker run命令是

docker run -p 54332:5432 -v `pwd`/volumes/postgres/log:/var/log/postgresql -v `pwd`/volumes/postgres/lib:/var/lib/postgresql mypostgres`

和我的docker文件:

FROM ubuntu:trusty

RUN apt-get update && \
    apt-get install wget --assume-yes

RUN echo "deb http://apt.postgresql.org/pub/repos/apt trusty-pgdg main" >> /etc/apt/sources.list &&\
    wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

RUN apt-get update &&\
    apt-get install postgresql-9.4-postgis-2.1 postgresql-contrib --assume-yes

RUN mkdir /home/postgres/  && \
    chown -R postgres /home/postgres

USER postgres

# make .pgpass file
RUN echo "127.0.0.1:5432:database:username:password" >> /home/postgres/.pgpass

RUN /etc/init.d/postgresql start &&\
    psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\
    createdb -O docker docker

# Adjust PostgreSQL configuration so that remote connections to the
# database are possible. 
RUN echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/9.4/main/pg_hba.conf

RUN echo "listen_addresses='*'" >> /etc/postgresql/9.4/main/postgresql.conf

# Expose the PostgreSQL port
EXPOSE 5432

# Add VOLUMEs to allow backup of config, logs and databases
VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]

# Set the default command to run when starting the container
CMD ["/usr/lib/postgresql/9.4/bin/postgres", "-D", "/var/lib/postgresql/9.4/main", "-c", "config_file=/etc/postgresql/9.4/main/postgresql.conf"]

發生這種情況是因為:

  • 您在運行VirtualBox VM的Windows上,其本身運行docker主機
  • 您正在為Windows和Docker主機之間共享的目錄安裝Docker卷

嘗試這個:

docker run -p 54332:5432 -v /tmp/volumes/postgres/log:/var/log/postgresql -v /tmp/volumes/postgres/lib:/var/lib/postgresql mypostgres

它應該工作,因為/tmp不是VirtualBox與Windows主機共享的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM