2015-06-30 68 views
0

我試圖dockerize postgresql服務器,同時堅持在主機上的數據。我的容器工作沒有來自主機的安裝體積細小,但它崩潰,因爲與這些卷的權限:Postgresql與碼頭:致命:無法讀取目錄的權限:權限被拒絕

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

我泊塢窗運行命令

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

和我的搬運工文件:

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"] 
+0

主機系統的操作系統/分佈是什麼? – lsowen

+0

這是一個Ubuntu服務器,運行到virtualbox,因爲我在windows下開發。我認爲這可能是由於某些安裝的文件夾權限,但無法通過複製文件,更改權限來解決該問題...... – Ben

回答

0

這是因爲:

  • 你是在Windows上運行的VirtualBox虛擬機本身運行的泊塢窗主機
  • 你安裝一個碼頭工人卷它是Windows和泊塢窗主機之間共享

目錄試試這個:

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主機共享的路徑。

+0

謝謝,它解決了權限問題。但是,它仍然不工作,我有一個錯誤,因爲某些目錄不存在: '致命:數據目錄「/var/lib/postgresql/9.4/main」不存在「 – Ben

+0

對不起,聽到這一點。我幾個星期前自己加了這個問題,而且這個伎倆。你的情況一定有其他的東西。可以肯定的是,你是否還嘗試過一個不是'/ tmp'的路徑(因爲'/ tmp'具有非常特殊的權限)? – Thomasleveil

+0

是的,我嘗試從git中拉出文件,並運行主目錄中的所有內容,但錯誤是相同的 – Ben