kopia lustrzana https://github.com/kartoza/docker-postgis
Merge branch 'develop'
commit
0d894f6f89
32
README.md
32
README.md
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue