在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 

如果你使用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服务正在运行,这些命令才能成功。

启用扩展的解决scheme

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