在Dockerfile中启用Postgis扩展Postgres

时间:2016-05-20 09:23:14

标签: postgresql docker postgis

如何在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

2 个答案:

答案 0 :(得分:1)

如果您看到使用psql -c命令的其他Dockerfiles,例如apache/marmotta Dockerfile,您会看到以下行:

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

换句话说,您需要确保postgresql服务正在运行,以使这些命令成功。

答案 1 :(得分:1)

启用扩展程序的解决方案

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