2016-05-20 75 views
1

如何在Dockerfile中啓用Postgis擴展? Postgres的安裝已經工作在Dockerfile中啓用Postgis擴展Postgres

這是Ubuntu的命令:

sudo -u postgres psql -c "CREATE EXTENSION postgis;" 

我Dockerfile:

# Set the base image to Ubuntu 
FROM ubuntu:14.04 

# Update the repository sources list 
RUN apt-get update -y 

################## BEGIN INSTALLATION ###################### 
# Postgres with Postgis 
# Install wget 
RUN apt-get install wget -y 

# Setup Postgres repository 
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - 

# Add Postgres repository 
RUN sh -c "echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" >> /etc/apt/sources.list.d/postgresql.list" 

# Update repository 
RUN apt-get update -y 

# Install Postgres with Postgis 
RUN apt-get install postgresql-9.3-postgis-2.1 -y 

# Change rights for start Postgresql 
RUN chmod +x /etc/init.d/postgresql 

# Start Postgresql 
CMD service postgresql start && tail -F /var/lib/postgresql/data/serverlog 
+0

你嘗試解決的辦法:'運行的psql -c 「創建擴展PostGIS的;」'? 如果是,它沒有幫助,那麼你能告訴我們你正在使用的Dockerfile嗎? –

+0

如果我嘗試:運行psql -c「CREATE EXTENSION postgis;」 。我得到這個錯誤:psql:無法連接到服務器:連接被拒絕 服務器是否在本地運行並接受 連接在Unix域套接字「/var/run/postgresql/.s.PGSQL.5432」? –

回答

1

如果你看到使用psql -c命令,像apache/marmotta Dockerfile,你會看到其他Dockerfiles線如:

RUN service postgresql start \ 
    && psql --command "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';" \ 
    && psql --command "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER;" 
USER root 
RUN service postgresql stop 

換句話說s,您需要確保postgresql服務正在運行以使這些命令成功。

+0

謝謝它的工作 –

1

用於啓動一個擴展

# Enable Postgis 
RUN service postgresql start \ 
&& sudo -u postgres psql -c "CREATE EXTENSION postgis;" 
RUN service postgresql stop