Merge branch 'develop'

pull/7/head
Tim Sutton 2014-10-03 07:37:05 +02:00
commit 0d894f6f89
3 zmienionych plików z 101 dodań i 30 usunięć

Wyświetl plik

@ -62,6 +62,38 @@ To create a running container do:
sudo docker run --name "postgis" -p 25432:5432 -d -t kartoza/postgis sudo docker run --name "postgis" -p 25432:5432 -d -t kartoza/postgis
``` ```
You can also use the following environment variables to pass a
user name and password.
* -e USERNAME=<PGUSER>
* -e PASS=<PGPASSWORD>
These will be used to create a new superuser with
your preferred credentials. If these are not specified then the postgresql
user is set to 'docker' with password 'docker'.
## Convenience run script
For convenience we have provided a bash script for running this container
that lets you specify a volume mount point and a username / password
for the new instance superuser. It takes these options:
```
OPTIONS:
-h Show this message
-n Container name
-v Volume to mount the Postgres cluster into
-u Postgres user name (defaults to 'docker')
-p Postgres password (defaults to 'docker')
```
Example usage:
```
./run-postgis-docker.sh -v /tmp/foo/ -n postgis -u foo -p bar
```
## Connect via psql ## Connect via psql
Connect with psql (make sure you first install postgresql client tools on your Connect with psql (make sure you first install postgresql client tools on your

Wyświetl plik

@ -1,43 +1,83 @@
#!/bin/bash #!/bin/bash
# Commit and redeploy the user map container # Commit and redeploy the user map container
# Note this script hosts the postgis cluster on the host filesystem usage()
# If you want to use the container with the cluster embedded {
# In the container, run it like this: cat << EOF
usage: $0 options
This script runs a new docker postgis instance for you.
OPTIONS:
-h Show this message
-n Container name
-v Volume to mount the Postgres cluster into
-u Postgres user name (defaults to 'docker')
-p Postgres password (defaults to 'docker')
EOF
}
while getopts ":h:n:v:u:p:" OPTION
do
case $OPTION in
n)
CONTAINER_NAME=${OPTARG}
;;
v)
VOLUME=${OPTARG}
;;
u)
PGUSER=${OPTARG}
;;
p)
PGPASSWORD=${OPTARG}
;;
*)
usage
exit 1
;;
esac
done
# if [[ -z $VOLUME ]] || [[ -z $CONTAINER_NAME ]] || [[ -z $PGUSER ]] || [[ -z $PGPASSWORD ]]
if [ $# -ne 1 ]; then then
echo "Deploy the postgis container." usage
echo "Usage:" exit 1
echo "$0 <version>"
echo "e.g.:"
echo "$0 2.1"
echo "Will run the container using tag version 2.1"
echo "Once it is running see the commit-and-deploy.sh script if you"
echo "wish to save new snapshots."
exit 1
fi fi
VERSION=$1
HOST_DATA_DIR=/var/docker-data/postgres-dat
PGUSER=qgis
PGPASS=qgis
IDFILE=/home/timlinux/postgis-current-container.id if [[ ! -z $VOLUME ]]
then
VOLUME_OPTION="-v ${VOLUME}:/var/lib/postgresql"
else
VOLUME_OPTION=""
fi
if [ ! -d $HOST_DATA_DIR ] if [ ! -d $HOST_DATA_DIR ]
then then
mkdir $HOST_DATA_DIR mkdir $HOST_DATA_DIR
fi fi
CMD="docker run -cidfile="$IDFILE" -name="postgis" -e USERNAME=$PGUSER -e PASS=$PGPASS -d -v $HOST_DATA_DIR:/var/lib/postgresql -t qgis/postgis:$VERSION /start.sh" chmod a+w $HOST_DATA_DIR
echo 'Running:'
docker kill ${CONTAINER_NAME}
docker rm ${CONTAINER_NAME}
CMD="docker run --name="${CONTAINER_NAME}" \
--hostname="${CONTAINER_NAME}" \
--restart=always \
-e USERNAME=${PGUSER} \
-e PASS=${PGPASSWORD} \
-d -t \
${VOLUME_OPTION} \
kartoza/postgis /start-postgis.sh"
echo 'Running\n'
echo $CMD echo $CMD
eval $CMD eval $CMD
NEWID=`cat $IDFILE`
echo "Postgis has been deployed as $NEWID" docker ps | grep ${CONTAINER_NAME}
docker ps -a | grep $NEWID
echo "If there was no pre-existing database, you can access this using" echo "Connect using:"
IPADDRESS=`docker inspect postgis | grep IPAddress | grep -o '[0-9\.]*'`
echo "psql -l -p 5432 -h $IPADDRESS -U $PGUSER" echo "psql -l -p 5432 -h $IPADDRESS -U $PGUSER"
echo "and password $PGPASS" echo "and password $PGPASS"
echo echo

7
start-postgis.sh 100644 → 100755
Wyświetl plik

@ -35,18 +35,17 @@ fi
# Make sure we have a user set up # Make sure we have a user set up
if [ -z "$USERNAME" ]; then if [ -z "$USERNAME" ]; then
USERNAME=postgis USERNAME=docker
fi fi
if [ -z "$PASS" ]; then if [ -z "$PASS" ]; then
PASS=postgis PASS=docker
#PASS=`pwgen -c -n -1 12`
fi fi
# redirect user/pass into a file so we can echo it into # redirect user/pass into a file so we can echo it into
# docker logs when container starts # docker logs when container starts
# so that we can tell user their password # so that we can tell user their password
echo "postgresql user: $USERNAME" > /tmp/PGPASSWORD.txt echo "postgresql user: $USERNAME" > /tmp/PGPASSWORD.txt
echo "postgresql password: $PASS" >> /tmp/PGPASSWORD.txt echo "postgresql password: $PASS" >> /tmp/PGPASSWORD.txt
$POSTGRES --single -D $DATADIR -c config_file=$CONF" <<< "CREATE USER $USERNAME WITH SUPERUSER ENCRYPTED PASSWORD '$PASS'; $POSTGRES --single -D $DATADIR -c config_file=$CONF <<< "CREATE USER $USERNAME WITH SUPERUSER ENCRYPTED PASSWORD '$PASS';"
trap "echo \"Sending SIGTERM to postgres\"; killall -s SIGTERM postgres" SIGTERM trap "echo \"Sending SIGTERM to postgres\"; killall -s SIGTERM postgres" SIGTERM