#!/usr/bin/env bash SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P ) IMAGE_NAME="postgres" IMAGE_VERSION="10.9" POSTGIS_MAJOR="2.5" POSTGIS_VERSION="2.5.2+dfsg-1~exp1.pgdg90+1" SERVICE_NAME=pgsql-db source ${SCRIPT_PATH}/../common.shinc # # Project specific variables # DB_VOLUME=pgsql_persistent_10 PORT=5432 source ${SCRIPT_PATH}/env.shinc 2> /dev/null __build() { docker build \ --build-arg IMAGE_NAME=${IMAGE_NAME} \ --build-arg VERSION=${IMAGE_VERSION} \ --build-arg POSTGIS_MAJOR=${IMAGE_VERSION} \ --build-arg POSTGIS_VERSION=${IMAGE_VERSION} \ -t ${SERVICE_NAME}:latest \ ${SCRIPT_PATH}/build return $? } init() { __init NETWORKS=(${DB_NETWORK}) __createNetworks __msg "Removing old postgres bin volume..." docker volume rm -f ${PGSQL_DB_BIN} && docker create \ --name ${SERVICE_NAME} \ --restart=unless-stopped \ -v ${DB_VOLUME}:/var/lib/postgresql/data \ -v ${PGSQL_DB_BIN}:/usr/lib/postgresql/${IMAGE_VERSION}/bin \ -e POSTGRES_USER=${DB_USER} \ -e POSTGRES_PASSWORD=${DB_PASSWORD} \ --net ${DB_NETWORK} \ -p ${PORT}:5432 \ ${IMAGE_NAME}:${IMAGE_VERSION} [[ $? -ne 0 ]] && return 1 __ask_to_start } migrate9to10() { local migrationVolume="pgsql-9-10-dump-migration" local migrationpath="/pgsql-data-dump" stop docker volume create ${migrationVolume} docker run --rm -d \ --name postgres_migration_from_9 \ -v ${DB_VOLUME}:/var/lib/postgresql/data \ -v ${PGSQL_DB_BIN}:/usr/lib/postgresql/${IMAGE_VERSION}/bin \ -v ${migrationVolume}:${migrationpath} \ -e POSTGRES_USER=${DB_USER} \ -e POSTGRES_PASSWORD=${DB_PASSWORD} \ mdillon/postgis:9 docker exec -it \ postgres_migration_from_9 \ bash -c "pg_dumpall > /migration/full.dump" if [[ $? -ne 0 ]]; then __err "Bad thing, don't continue, quitsies, bye" exit 137 fi docker stop postgres_migration_from_9 docker volume rm -f ${DB_VOLUME} docker volume create ${DB_VOLUME} docker run --rm -d \ --name postgres_migration_to_10 \ -v ${DB_VOLUME}:/var/lib/postgresql/data \ -v ${PGSQL_DB_BIN}:/usr/lib/postgresql/${IMAGE_VERSION}/bin \ -v ${migrationVolume}:${migrationpath} \ -e POSTGRES_USER=${DB_USER} \ -e POSTGRES_PASSWORD=${DB_PASSWORD} \ mdillon/postgis:10 \ psql -d postgres -f ${migrationpath}/full.dump sudo docker exec -it \ postgres_migration_to_10 \ psql -f /migration/full.dump docker stop postgres_migration_to_10 __init } "$@" exit $?