113 lines
2.4 KiB
Bash
Executable File
113 lines
2.4 KiB
Bash
Executable File
#!/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 $?
|