kopia lustrzana https://github.com/kartoza/docker-postgis
rodzic
74bb497307
commit
c816d5e72e
|
@ -730,7 +730,7 @@ Slave settings:
|
||||||
- **DESTROY_DATABASE_ON_RESTART**: Default is `True`. Set to 'False' to prevent this behavior. A
|
- **DESTROY_DATABASE_ON_RESTART**: Default is `True`. Set to 'False' to prevent this behavior. A
|
||||||
replicant will always destroy its current database on restart, because it will try to sync again
|
replicant will always destroy its current database on restart, because it will try to sync again
|
||||||
from `master` and avoid inconsistencies.
|
from `master` and avoid inconsistencies.
|
||||||
- **PROMOTE_MASTER**: Default none. If set to any value then the current replicant
|
- **PROMOTE_MASTER**: Default false. If set to `true` then the current replicant
|
||||||
will be promoted to master. In some cases when the `master` container has failed, we might want
|
will be promoted to master. In some cases when the `master` container has failed, we might want
|
||||||
to use our `replicant` as `master` for a while. However, the promoted replicant will break
|
to use our `replicant` as `master` for a while. However, the promoted replicant will break
|
||||||
consistencies and is not able to revert to replicant anymore, unless it is destroyed and
|
consistencies and is not able to revert to replicant anymore, unless it is destroyed and
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# Commit and redeploy the user map container
|
|
||||||
#
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
echo "Commit and then redeploy the user_map container."
|
|
||||||
echo "Usage:"
|
|
||||||
echo "$0 <version>"
|
|
||||||
echo "e.g.:"
|
|
||||||
echo "$0 1.6"
|
|
||||||
echo "Will commit the current state of the container as version 1.6"
|
|
||||||
echo "and then redeploy it."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
VERSION=$1
|
|
||||||
HOST_DATA_DIR=/var/docker-data/postgres-data
|
|
||||||
PGUSER=qgis
|
|
||||||
PGPASS=qgis
|
|
||||||
|
|
||||||
IDFILE=/home/timlinux/postgis-current-container.id
|
|
||||||
ID=`cat $IDFILE`
|
|
||||||
docker commit $ID qgis/postgis:$VERSION -run='{"Cmd": ["/start.sh"], "PortSpecs": ["5432"], "Hostname": "postgis"}' -author="Tim Sutton <tim@linfiniti.com>"
|
|
||||||
docker kill $ID
|
|
||||||
docker rm $ID
|
|
||||||
rm $IDFILE
|
|
||||||
if [ ! -d $HOST_DATA_DIR ]
|
|
||||||
then
|
|
||||||
mkdir $HOST_DATA_DIR
|
|
||||||
fi
|
|
||||||
CMD="docker run -cidfile="$IDFILE" -name="postgis" -e POSTGRES_USER=$PGUSER -e POSTGRES_PASS=$PGPASS -d -v $HOST_DATA_DIR:/var/lib/postgresql -t qgis/postgis:$VERSION /start.sh"
|
|
||||||
echo 'Running:'
|
|
||||||
echo $CMD
|
|
||||||
eval $CMD
|
|
||||||
NEWID=`cat $IDFILE`
|
|
||||||
echo "Postgis has been committed as $1 and redeployed as $NEWID"
|
|
||||||
docker ps -a | grep $NEWID
|
|
||||||
echo "If thhere was no pre-existing database, you can access this using"
|
|
||||||
IPADDRESS=`docker inspect postgis | grep IPAddress | grep -o '[0-9\.]*'`
|
|
||||||
echo "psql -l -p 5432 -h $IPADDRESS -U $PGUSER"
|
|
||||||
echo "and password $PGPASS"
|
|
|
@ -1 +0,0 @@
|
||||||
docker-compose==1.28
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pg-data-dir:
|
pg-data-dir:
|
||||||
|
@ -11,8 +11,6 @@ services:
|
||||||
pg:
|
pg:
|
||||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||||
restart: 'always'
|
restart: 'always'
|
||||||
# You can optionally mount to volume, to play with the persistence and
|
|
||||||
# observe how the node will behave after restarts.
|
|
||||||
volumes:
|
volumes:
|
||||||
- pg-data-dir:/var/lib/postgresql
|
- pg-data-dir:/var/lib/postgresql
|
||||||
- ./tests:/tests
|
- ./tests:/tests
|
||||||
|
@ -35,8 +33,6 @@ services:
|
||||||
pg-new:
|
pg-new:
|
||||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||||
restart: 'always'
|
restart: 'always'
|
||||||
# You can optionally mount to volume, to play with the persistence and
|
|
||||||
# observe how the node will behave after restarts.
|
|
||||||
volumes:
|
volumes:
|
||||||
- new-pg-data-dir:/opt/data/postgis
|
- new-pg-data-dir:/opt/data/postgis
|
||||||
- ./tests:/tests
|
- ./tests:/tests
|
||||||
|
@ -62,8 +58,6 @@ services:
|
||||||
pg-gosu:
|
pg-gosu:
|
||||||
image: 'kartoza/postgis:${TAG:-manual-build}'
|
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||||
restart: 'always'
|
restart: 'always'
|
||||||
# You can optionally mount to volume, to play with the persistence and
|
|
||||||
# observe how the node will behave after restarts.
|
|
||||||
volumes:
|
volumes:
|
||||||
- pg-data-dir-gs:/var/lib/postgresql
|
- pg-data-dir-gs:/var/lib/postgresql
|
||||||
- ./tests:/tests
|
- ./tests:/tests
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
volumes:
|
volumes:
|
||||||
default-pg-data-dir:
|
default-pg-data-dir:
|
||||||
new-pg-data-dir:
|
new-pg-data-dir:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
volumes:
|
volumes:
|
||||||
default-pg-data-dir:
|
default-pg-data-dir:
|
||||||
new-pg-data-dir:
|
new-pg-data-dir:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
pg:
|
pg:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
volumes:
|
volumes:
|
||||||
default-pg-data-dir-md5:
|
default-pg-data-dir-md5:
|
||||||
new-pg-data-dir:
|
new-pg-data-dir:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pg-publisher-data-dir:
|
pg-publisher-data-dir:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pg-publisher-data-dir:
|
pg-publisher-data-dir:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pg-db-data-dir:
|
pg-db-data-dir:
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
|
||||||
|
version: '2.1'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pg-master-data-dir:
|
||||||
|
pg-node-data-dir:
|
||||||
|
|
||||||
|
services:
|
||||||
|
pg-master:
|
||||||
|
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||||
|
restart: 'always'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- pg-master-data-dir:/var/lib/postgresql
|
||||||
|
- ./tests:/tests
|
||||||
|
- ../utils:/lib/utils
|
||||||
|
- ./scripts/setup-master.sql:/docker-entrypoint-initdb.d/setup-master.sql
|
||||||
|
environment:
|
||||||
|
|
||||||
|
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||||
|
|
||||||
|
# We can specify optional credentials
|
||||||
|
POSTGRES_PASS: 'docker'
|
||||||
|
REPLICATION_USER: 'replicator'
|
||||||
|
REPLICATION_PASS: 'replicator'
|
||||||
|
REPLICATION: 'true'
|
||||||
|
RUN_AS_ROOT: false
|
||||||
|
healthcheck:
|
||||||
|
interval: 60s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 3
|
||||||
|
test: "pg_isready"
|
||||||
|
|
||||||
|
pg-node:
|
||||||
|
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||||
|
restart: 'always'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- pg-node-data-dir:/var/lib/postgresql
|
||||||
|
- ./tests:/tests
|
||||||
|
- ../utils:/lib/utils
|
||||||
|
|
||||||
|
environment:
|
||||||
|
|
||||||
|
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||||
|
POSTGRES_PASS: 'docker'
|
||||||
|
REPLICATE_FROM: 'pg-master'
|
||||||
|
REPLICATION: 'true'
|
||||||
|
RUN_AS_ROOT: false
|
||||||
|
PROMOTE_MASTER: false
|
||||||
|
DESTROY_DATABASE_ON_RESTART: 'True'
|
||||||
|
REPLICATION_USER: 'replicator'
|
||||||
|
REPLICATION_PASS: 'replicator'
|
||||||
|
depends_on:
|
||||||
|
pg-master:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
healthcheck:
|
||||||
|
interval: 60s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 3
|
||||||
|
test: "pg_isready"
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pg-master-data-dir:
|
pg-master-data-dir:
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
|
||||||
|
version: '2.1'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pg-master-data-dir:
|
||||||
|
pg-node-data-dir:
|
||||||
|
|
||||||
|
services:
|
||||||
|
pg-master:
|
||||||
|
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||||
|
restart: 'always'
|
||||||
|
volumes:
|
||||||
|
- pg-master-data-dir:/var/lib/postgresql
|
||||||
|
- ./tests:/tests
|
||||||
|
- ../utils:/lib/utils
|
||||||
|
- ./scripts/setup-master.sql:/docker-entrypoint-initdb.d/setup-master.sql
|
||||||
|
environment:
|
||||||
|
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||||
|
# We can specify optional credentials
|
||||||
|
POSTGRES_PASS: 'docker'
|
||||||
|
REPLICATION_USER: 'replicator'
|
||||||
|
REPLICATION_PASS: 'replicator'
|
||||||
|
REPLICATION: 'true'
|
||||||
|
RUN_AS_ROOT: true
|
||||||
|
healthcheck:
|
||||||
|
interval: 60s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 3
|
||||||
|
test: "pg_isready"
|
||||||
|
|
||||||
|
pg-node:
|
||||||
|
image: 'kartoza/postgis:${TAG:-manual-build}'
|
||||||
|
restart: 'always'
|
||||||
|
volumes:
|
||||||
|
- pg-node-data-dir:/var/lib/postgresql
|
||||||
|
- ./tests:/tests
|
||||||
|
- ../utils:/lib/utils
|
||||||
|
environment:
|
||||||
|
ALLOW_IP_RANGE: '0.0.0.0/0'
|
||||||
|
POSTGRES_PASS: 'docker'
|
||||||
|
REPLICATE_FROM: 'pg-master'
|
||||||
|
REPLICATION: 'true'
|
||||||
|
RUN_AS_ROOT: true
|
||||||
|
PROMOTE_MASTER: false
|
||||||
|
DESTROY_DATABASE_ON_RESTART: 'True'
|
||||||
|
REPLICATION_USER: 'replicator'
|
||||||
|
REPLICATION_PASS: 'replicator'
|
||||||
|
depends_on:
|
||||||
|
pg-master:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
interval: 60s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 3
|
||||||
|
test: "pg_isready"
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
version: '2.1'
|
version: '3.9'
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pg-master-data-dir:
|
pg-master-data-dir:
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
-- Create a table
|
||||||
|
CREATE TABLE IF NOT EXISTS sweets
|
||||||
|
(
|
||||||
|
id SERIAL,
|
||||||
|
name TEXT,
|
||||||
|
price DECIMAL,
|
||||||
|
CONSTRAINT sweets_pkey PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Inserts records into the table
|
||||||
|
INSERT INTO sweets (name, price) VALUES ('strawberry', 4.50), ('Coffee', 6.20), ('lollipop', 3.80);
|
|
@ -11,8 +11,9 @@ if [[ $(dpkg -l | grep "docker-compose") > /dev/null ]];then
|
||||||
VERSION='docker compose'
|
VERSION='docker compose'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
####
|
||||||
# Run service as root user
|
# Run service as root user
|
||||||
|
####
|
||||||
${VERSION} up -d
|
${VERSION} up -d
|
||||||
|
|
||||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
@ -39,7 +40,9 @@ ${VERSION} exec -T pg-node /bin/bash /tests/test_node.sh
|
||||||
|
|
||||||
${VERSION} down -v
|
${VERSION} down -v
|
||||||
|
|
||||||
|
####
|
||||||
# Run service as none root
|
# Run service as none root
|
||||||
|
####
|
||||||
${VERSION} -f docker-compose-gs.yml up -d
|
${VERSION} -f docker-compose-gs.yml up -d
|
||||||
|
|
||||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
@ -65,3 +68,63 @@ done;
|
||||||
${VERSION} -f docker-compose-gs.yml exec -T pg-node /bin/bash /tests/test_node.sh
|
${VERSION} -f docker-compose-gs.yml exec -T pg-node /bin/bash /tests/test_node.sh
|
||||||
|
|
||||||
${VERSION} -f docker-compose-gs.yml down -v
|
${VERSION} -f docker-compose-gs.yml down -v
|
||||||
|
|
||||||
|
|
||||||
|
####
|
||||||
|
# Run service as root user for node promotion
|
||||||
|
####
|
||||||
|
${VERSION} -f docker-compose-root-promote.yml up -d
|
||||||
|
|
||||||
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
${VERSION} -f docker-compose-root-promote.yml logs -f &
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
# Update env variable
|
||||||
|
sed -i 's/\(PROMOTE_MASTER: \)false/\1true/' docker-compose-root-promote.yml
|
||||||
|
|
||||||
|
# Bring up node with option to promote node
|
||||||
|
|
||||||
|
${VERSION} -f docker-compose-root-promote.yml up -d pg-node
|
||||||
|
|
||||||
|
# Preparing node cluster
|
||||||
|
until ${VERSION} -f docker-compose-root-promote.yml exec -T pg-node pg_isready; do
|
||||||
|
sleep 30
|
||||||
|
done;
|
||||||
|
|
||||||
|
# Execute tests
|
||||||
|
${VERSION} -f docker-compose-root-promote.yml exec -T pg-node /bin/bash /tests/test_node_promotion.sh
|
||||||
|
|
||||||
|
${VERSION} -f docker-compose-root-promote.yml down -v
|
||||||
|
sed -i 's/\(PROMOTE_MASTER: \)true/\1false/' docker-compose-root-promote.yml
|
||||||
|
|
||||||
|
####
|
||||||
|
# Run service as none root user for node promotion
|
||||||
|
####
|
||||||
|
${VERSION} -f docker-compose-gs-promote.yml up -d
|
||||||
|
|
||||||
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
${VERSION} -f docker-compose-gs-promote.yml logs -f &
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
# Update env variable
|
||||||
|
sed -i 's/\(PROMOTE_MASTER: \)false/\1true/' docker-compose-gs-promote.yml
|
||||||
|
|
||||||
|
# Bring up node with option to promote node
|
||||||
|
|
||||||
|
${VERSION} -f docker-compose-gs-promote.yml up -d pg-node
|
||||||
|
|
||||||
|
# Preparing node cluster
|
||||||
|
until ${VERSION} -f docker-compose-gs-promote.yml exec -T pg-node pg_isready; do
|
||||||
|
sleep 30
|
||||||
|
done;
|
||||||
|
|
||||||
|
# Execute tests
|
||||||
|
${VERSION} -f docker-compose-gs-promote.yml exec -T pg-node /bin/bash /tests/test_node_promotion.sh
|
||||||
|
|
||||||
|
${VERSION} -f docker-compose-gs-promote.yml down -v
|
||||||
|
sed -i 's/\(PROMOTE_MASTER: \)true/\1false/' docker-compose-gs-promote.yml
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
source /scripts/env-data.sh
|
||||||
|
|
||||||
|
# execute tests
|
||||||
|
pushd /tests
|
||||||
|
|
||||||
|
PGHOST=localhost \
|
||||||
|
PGDATABASE=gis \
|
||||||
|
PYTHONPATH=/lib \
|
||||||
|
python3 -m unittest -v test_replication.TestReplicationPromotion
|
|
@ -56,4 +56,27 @@ class TestReplicationNode(unittest.TestCase):
|
||||||
|
|
||||||
rows = c.fetchall()
|
rows = c.fetchall()
|
||||||
self.assertEqual(len(rows), 1)
|
self.assertEqual(len(rows), 1)
|
||||||
|
class TestReplicationPromotion(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.db = DBConnection()
|
||||||
|
|
||||||
|
def test_read_data(self):
|
||||||
|
# create new table
|
||||||
|
self.db.conn.autocommit = True
|
||||||
|
with self.db.cursor() as c:
|
||||||
|
c.execute(
|
||||||
|
"""
|
||||||
|
INSERT INTO sweets (name ,price) values ('Test', 10);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
c.execute(
|
||||||
|
"""
|
||||||
|
SELECT * FROM sweets where name = 'Test';
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
rows = c.fetchone()
|
||||||
|
self.assertEqual(len(rows), 3)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,17 +10,18 @@ class DBConnection:
|
||||||
|
|
||||||
def table_exists(self, table_name, table_schema='public'):
|
def table_exists(self, table_name, table_schema='public'):
|
||||||
cur = self.conn.cursor()
|
cur = self.conn.cursor()
|
||||||
query = (
|
query = '''select exists (select 1 from information_schema.tables \
|
||||||
'select '
|
where table_name = %s and table_schema = %s)''' % (table_name, table_schema)
|
||||||
'exists('
|
|
||||||
'select 1 '
|
cur.execute(query)
|
||||||
'from information_schema.tables '
|
|
||||||
'where table_name = %s and table_schema = %s)')
|
|
||||||
cur.execute(query, (table_name, table_schema))
|
|
||||||
try:
|
try:
|
||||||
row = cur.fetchone()
|
row = cur.fetchone()
|
||||||
return row[0]
|
if row is not None:
|
||||||
except:
|
return row[0]
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
except Exception as e:
|
||||||
|
print(f"An error occurred: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -74,8 +74,17 @@ else
|
||||||
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||||
non_root_permission "${USER_NAME}" "${DB_GROUP_NAME}"
|
non_root_permission "${USER_NAME}" "${DB_GROUP_NAME}"
|
||||||
else
|
else
|
||||||
chown -R postgres:postgres "${DATADIR}" "${WAL_ARCHIVE}"
|
dir_ownership=("${DATADIR}" "${WAL_ARCHIVE}")
|
||||||
chmod -R 750 "${DATADIR}" "${WAL_ARCHIVE}"
|
for directory in "${dir_ownership[@]}"; do
|
||||||
|
if [[ $(stat -c '%U' "${directory}") != "postgres" ]] && [[ $(stat -c '%G' "${directory}") != "postgres" ]];then
|
||||||
|
chown -R postgres:postgres "${directory}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for directory in "${dir_ownership[@]}"; do
|
||||||
|
if [ "$(stat -c %a "$directory")" != "750" ]; then
|
||||||
|
chmod -R 750 "$directory"
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
source /scripts/setup-replication.sh
|
source /scripts/setup-replication.sh
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -20,9 +20,10 @@ SQLDIR="/usr/share/postgresql/${POSTGRES_MAJOR_VERSION}/contrib/postgis-${POSTGI
|
||||||
EXTDIR="/usr/share/postgresql/${POSTGRES_MAJOR_VERSION}/extension/"
|
EXTDIR="/usr/share/postgresql/${POSTGRES_MAJOR_VERSION}/extension/"
|
||||||
SETVARS="POSTGIS_ENABLE_OUTDB_RASTERS=1 POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL"
|
SETVARS="POSTGIS_ENABLE_OUTDB_RASTERS=1 POSTGIS_GDAL_ENABLED_DRIVERS=ENABLE_ALL"
|
||||||
LOCALONLY="-c listen_addresses='127.0.0.1'"
|
LOCALONLY="-c listen_addresses='127.0.0.1'"
|
||||||
PG_BASEBACKUP="/usr/bin/pg_basebackup"
|
PG_BASEBACKUP="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_basebackup"
|
||||||
PROMOTE_FILE="/tmp/pg_promote_master"
|
PROMOTE_FILE="/tmp/pg_promote_master"
|
||||||
NODE_PROMOTION="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_ctl"
|
NODE_PROMOTION="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_ctl"
|
||||||
|
DATA_DIR_CONTROL="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_controldata"
|
||||||
PGSTAT_TMP="/var/run/postgresql/"
|
PGSTAT_TMP="/var/run/postgresql/"
|
||||||
PG_PID="/var/run/postgresql/${POSTGRES_MAJOR_VERSION}-main.pid"
|
PG_PID="/var/run/postgresql/${POSTGRES_MAJOR_VERSION}-main.pid"
|
||||||
|
|
||||||
|
@ -34,7 +35,7 @@ PG_PID="/var/run/postgresql/${POSTGRES_MAJOR_VERSION}-main.pid"
|
||||||
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
|
# ie: file_env 'XYZ_DB_PASSWORD' 'example'
|
||||||
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
|
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
|
||||||
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
|
# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
|
||||||
function file_env {
|
function file_env() {
|
||||||
local var="$1"
|
local var="$1"
|
||||||
local fileVar="${var}_FILE"
|
local fileVar="${var}_FILE"
|
||||||
local def="${2:-}"
|
local def="${2:-}"
|
||||||
|
@ -65,7 +66,7 @@ function boolean() {
|
||||||
|
|
||||||
file_env 'POSTGRES_PASS'
|
file_env 'POSTGRES_PASS'
|
||||||
file_env 'POSTGRES_USER'
|
file_env 'POSTGRES_USER'
|
||||||
file_env 'POSTGRES_DBNAME'
|
|
||||||
|
|
||||||
function create_dir() {
|
function create_dir() {
|
||||||
DATA_PATH=$1
|
DATA_PATH=$1
|
||||||
|
@ -211,7 +212,7 @@ fi
|
||||||
|
|
||||||
if [ -z "${ARCHIVE_CLEANUP_COMMAND}" ]; then
|
if [ -z "${ARCHIVE_CLEANUP_COMMAND}" ]; then
|
||||||
# https://www.postgresql.org/docs/12/runtime-config-wal.html
|
# https://www.postgresql.org/docs/12/runtime-config-wal.html
|
||||||
ARCHIVE_CLEANUP_COMMAND="pg_archivecleanup ${WAL_ARCHIVE} %r"
|
ARCHIVE_CLEANUP_COMMAND="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_archivecleanup ${WAL_ARCHIVE} %r"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${WAL_LEVEL}" ]; then
|
if [ -z "${WAL_LEVEL}" ]; then
|
||||||
|
@ -401,6 +402,17 @@ if [ -z "${TIMEZONE}" ]; then
|
||||||
TIMEZONE='Etc/UTC'
|
TIMEZONE='Etc/UTC'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "${KERNEL_SHMMAX}" ]; then
|
||||||
|
KERNEL_SHMMAX=543252480
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${KERNEL_SHMALL}" ]; then
|
||||||
|
KERNEL_SHMALL=2097152
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${PROMOTE_MASTER}" ]; then
|
||||||
|
PROMOTE_MASTER=FALSE
|
||||||
|
fi
|
||||||
# usable function definitions
|
# usable function definitions
|
||||||
function kill_postgres {
|
function kill_postgres {
|
||||||
PID=$(cat "${PG_PID}")
|
PID=$(cat "${PG_PID}")
|
||||||
|
@ -587,7 +599,7 @@ function non_root_permission() {
|
||||||
directory_checker "${dir_names}"
|
directory_checker "${dir_names}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
services=("/usr/lib/postgresql/" "/etc/" "/var/run/!(secrets)" "/var/lib/" "/usr/bin" "/tmp" "/scripts")
|
services=("/usr/lib/postgresql/" "/etc/" "/var/log/postgresql" "/var/run/!(secrets)" "/var/lib/" "/usr/bin" "/tmp" "/scripts")
|
||||||
for paths in "${services[@]}"; do
|
for paths in "${services[@]}"; do
|
||||||
directory_checker "${paths}"
|
directory_checker "${paths}"
|
||||||
done
|
done
|
||||||
|
@ -605,3 +617,4 @@ function role_check() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,484 +0,0 @@
|
||||||
# This file lists locales that you wish to have built. You can find a list
|
|
||||||
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
|
|
||||||
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
|
|
||||||
# this file, you need to rerun locale-gen.
|
|
||||||
|
|
||||||
|
|
||||||
aa_DJ ISO-8859-1
|
|
||||||
aa_DJ.UTF-8 UTF-8
|
|
||||||
aa_ER UTF-8
|
|
||||||
aa_ER@saaho UTF-8
|
|
||||||
aa_ET UTF-8
|
|
||||||
af_ZA ISO-8859-1
|
|
||||||
af_ZA.UTF-8 UTF-8
|
|
||||||
ak_GH UTF-8
|
|
||||||
am_ET UTF-8
|
|
||||||
an_ES ISO-8859-15
|
|
||||||
an_ES.UTF-8 UTF-8
|
|
||||||
anp_IN UTF-8
|
|
||||||
ar_AE ISO-8859-6
|
|
||||||
ar_AE.UTF-8 UTF-8
|
|
||||||
ar_BH ISO-8859-6
|
|
||||||
ar_BH.UTF-8 UTF-8
|
|
||||||
ar_DZ ISO-8859-6
|
|
||||||
ar_DZ.UTF-8 UTF-8
|
|
||||||
ar_EG ISO-8859-6
|
|
||||||
ar_EG.UTF-8 UTF-8
|
|
||||||
ar_IN UTF-8
|
|
||||||
ar_IQ ISO-8859-6
|
|
||||||
ar_IQ.UTF-8 UTF-8
|
|
||||||
ar_JO ISO-8859-6
|
|
||||||
ar_JO.UTF-8 UTF-8
|
|
||||||
ar_KW ISO-8859-6
|
|
||||||
ar_KW.UTF-8 UTF-8
|
|
||||||
ar_LB ISO-8859-6
|
|
||||||
ar_LB.UTF-8 UTF-8
|
|
||||||
ar_LY ISO-8859-6
|
|
||||||
ar_LY.UTF-8 UTF-8
|
|
||||||
ar_MA ISO-8859-6
|
|
||||||
ar_MA.UTF-8 UTF-8
|
|
||||||
ar_OM ISO-8859-6
|
|
||||||
ar_OM.UTF-8 UTF-8
|
|
||||||
ar_QA ISO-8859-6
|
|
||||||
ar_QA.UTF-8 UTF-8
|
|
||||||
ar_SA ISO-8859-6
|
|
||||||
ar_SA.UTF-8 UTF-8
|
|
||||||
ar_SD ISO-8859-6
|
|
||||||
ar_SD.UTF-8 UTF-8
|
|
||||||
ar_SS UTF-8
|
|
||||||
ar_SY ISO-8859-6
|
|
||||||
ar_SY.UTF-8 UTF-8
|
|
||||||
ar_TN ISO-8859-6
|
|
||||||
ar_TN.UTF-8 UTF-8
|
|
||||||
ar_YE ISO-8859-6
|
|
||||||
ar_YE.UTF-8 UTF-8
|
|
||||||
as_IN UTF-8
|
|
||||||
ast_ES ISO-8859-15
|
|
||||||
ast_ES.UTF-8 UTF-8
|
|
||||||
ayc_PE UTF-8
|
|
||||||
az_AZ UTF-8
|
|
||||||
be_BY CP1251
|
|
||||||
be_BY.UTF-8 UTF-8
|
|
||||||
be_BY@latin UTF-8
|
|
||||||
bem_ZM UTF-8
|
|
||||||
ber_DZ UTF-8
|
|
||||||
ber_MA UTF-8
|
|
||||||
bg_BG CP1251
|
|
||||||
bg_BG.UTF-8 UTF-8
|
|
||||||
bhb_IN.UTF-8 UTF-8
|
|
||||||
bho_IN UTF-8
|
|
||||||
bn_BD UTF-8
|
|
||||||
bn_IN UTF-8
|
|
||||||
bo_CN UTF-8
|
|
||||||
bo_IN UTF-8
|
|
||||||
br_FR ISO-8859-1
|
|
||||||
br_FR.UTF-8 UTF-8
|
|
||||||
br_FR@euro ISO-8859-15
|
|
||||||
brx_IN UTF-8
|
|
||||||
bs_BA ISO-8859-2
|
|
||||||
bs_BA.UTF-8 UTF-8
|
|
||||||
byn_ER UTF-8
|
|
||||||
ca_AD ISO-8859-15
|
|
||||||
ca_AD.UTF-8 UTF-8
|
|
||||||
ca_ES ISO-8859-1
|
|
||||||
ca_ES.UTF-8 UTF-8
|
|
||||||
ca_ES.UTF-8@valencia UTF-8
|
|
||||||
ca_ES@euro ISO-8859-15
|
|
||||||
ca_ES@valencia ISO-8859-15
|
|
||||||
ca_FR ISO-8859-15
|
|
||||||
ca_FR.UTF-8 UTF-8
|
|
||||||
ca_IT ISO-8859-15
|
|
||||||
ca_IT.UTF-8 UTF-8
|
|
||||||
ce_RU UTF-8
|
|
||||||
chr_US UTF-8
|
|
||||||
cmn_TW UTF-8
|
|
||||||
crh_UA UTF-8
|
|
||||||
cs_CZ ISO-8859-2
|
|
||||||
cs_CZ.UTF-8 UTF-8
|
|
||||||
csb_PL UTF-8
|
|
||||||
cv_RU UTF-8
|
|
||||||
cy_GB ISO-8859-14
|
|
||||||
cy_GB.UTF-8 UTF-8
|
|
||||||
da_DK ISO-8859-1
|
|
||||||
da_DK.UTF-8 UTF-8
|
|
||||||
de_AT ISO-8859-1
|
|
||||||
de_AT.UTF-8 UTF-8
|
|
||||||
de_AT@euro ISO-8859-15
|
|
||||||
de_BE ISO-8859-1
|
|
||||||
de_BE.UTF-8 UTF-8
|
|
||||||
de_BE@euro ISO-8859-15
|
|
||||||
de_CH ISO-8859-1
|
|
||||||
de_CH.UTF-8 UTF-8
|
|
||||||
de_DE ISO-8859-1
|
|
||||||
de_DE.UTF-8 UTF-8
|
|
||||||
de_DE@euro ISO-8859-15
|
|
||||||
de_IT ISO-8859-1
|
|
||||||
de_IT.UTF-8 UTF-8
|
|
||||||
de_LI.UTF-8 UTF-8
|
|
||||||
de_LU ISO-8859-1
|
|
||||||
de_LU.UTF-8 UTF-8
|
|
||||||
de_LU@euro ISO-8859-15
|
|
||||||
doi_IN UTF-8
|
|
||||||
dv_MV UTF-8
|
|
||||||
dz_BT UTF-8
|
|
||||||
el_CY ISO-8859-7
|
|
||||||
el_CY.UTF-8 UTF-8
|
|
||||||
el_GR ISO-8859-7
|
|
||||||
el_GR.UTF-8 UTF-8
|
|
||||||
en_AG UTF-8
|
|
||||||
en_AU ISO-8859-1
|
|
||||||
en_AU.UTF-8 UTF-8
|
|
||||||
en_BW ISO-8859-1
|
|
||||||
en_BW.UTF-8 UTF-8
|
|
||||||
en_CA ISO-8859-1
|
|
||||||
en_CA.UTF-8 UTF-8
|
|
||||||
en_DK ISO-8859-1
|
|
||||||
en_DK.ISO-8859-15 ISO-8859-15
|
|
||||||
en_DK.UTF-8 UTF-8
|
|
||||||
en_GB ISO-8859-1
|
|
||||||
en_GB.ISO-8859-15 ISO-8859-15
|
|
||||||
en_GB.UTF-8 UTF-8
|
|
||||||
en_HK ISO-8859-1
|
|
||||||
en_HK.UTF-8 UTF-8
|
|
||||||
en_IE ISO-8859-1
|
|
||||||
en_IE.UTF-8 UTF-8
|
|
||||||
en_IE@euro ISO-8859-15
|
|
||||||
en_IL UTF-8
|
|
||||||
en_IN UTF-8
|
|
||||||
en_NG UTF-8
|
|
||||||
en_NZ ISO-8859-1
|
|
||||||
en_NZ.UTF-8 UTF-8
|
|
||||||
en_PH ISO-8859-1
|
|
||||||
en_PH.UTF-8 UTF-8
|
|
||||||
en_SG ISO-8859-1
|
|
||||||
en_SG.UTF-8 UTF-8
|
|
||||||
en_US ISO-8859-1
|
|
||||||
en_US.ISO-8859-15 ISO-8859-15
|
|
||||||
en_US.UTF-8 UTF-8
|
|
||||||
en_ZA ISO-8859-1
|
|
||||||
en_ZA.UTF-8 UTF-8
|
|
||||||
en_ZM UTF-8
|
|
||||||
en_ZW ISO-8859-1
|
|
||||||
en_ZW.UTF-8 UTF-8
|
|
||||||
eo UTF-8
|
|
||||||
es_AR ISO-8859-1
|
|
||||||
es_AR.UTF-8 UTF-8
|
|
||||||
es_BO ISO-8859-1
|
|
||||||
es_BO.UTF-8 UTF-8
|
|
||||||
es_CL ISO-8859-1
|
|
||||||
es_CL.UTF-8 UTF-8
|
|
||||||
es_CO ISO-8859-1
|
|
||||||
es_CO.UTF-8 UTF-8
|
|
||||||
es_CR ISO-8859-1
|
|
||||||
es_CR.UTF-8 UTF-8
|
|
||||||
es_CU UTF-8
|
|
||||||
es_DO ISO-8859-1
|
|
||||||
es_DO.UTF-8 UTF-8
|
|
||||||
es_EC ISO-8859-1
|
|
||||||
es_EC.UTF-8 UTF-8
|
|
||||||
es_ES ISO-8859-1
|
|
||||||
es_ES.UTF-8 UTF-8
|
|
||||||
es_ES@euro ISO-8859-15
|
|
||||||
es_GT ISO-8859-1
|
|
||||||
es_GT.UTF-8 UTF-8
|
|
||||||
es_HN ISO-8859-1
|
|
||||||
es_HN.UTF-8 UTF-8
|
|
||||||
es_MX ISO-8859-1
|
|
||||||
es_MX.UTF-8 UTF-8
|
|
||||||
es_NI ISO-8859-1
|
|
||||||
es_NI.UTF-8 UTF-8
|
|
||||||
es_PA ISO-8859-1
|
|
||||||
es_PA.UTF-8 UTF-8
|
|
||||||
es_PE ISO-8859-1
|
|
||||||
es_PE.UTF-8 UTF-8
|
|
||||||
es_PR ISO-8859-1
|
|
||||||
es_PR.UTF-8 UTF-8
|
|
||||||
es_PY ISO-8859-1
|
|
||||||
es_PY.UTF-8 UTF-8
|
|
||||||
es_SV ISO-8859-1
|
|
||||||
es_SV.UTF-8 UTF-8
|
|
||||||
es_US ISO-8859-1
|
|
||||||
es_US.UTF-8 UTF-8
|
|
||||||
es_UY ISO-8859-1
|
|
||||||
es_UY.UTF-8 UTF-8
|
|
||||||
es_VE ISO-8859-1
|
|
||||||
es_VE.UTF-8 UTF-8
|
|
||||||
et_EE ISO-8859-1
|
|
||||||
et_EE.ISO-8859-15 ISO-8859-15
|
|
||||||
et_EE.UTF-8 UTF-8
|
|
||||||
eu_ES ISO-8859-1
|
|
||||||
eu_ES.UTF-8 UTF-8
|
|
||||||
eu_ES@euro ISO-8859-15
|
|
||||||
eu_FR ISO-8859-1
|
|
||||||
eu_FR.UTF-8 UTF-8
|
|
||||||
eu_FR@euro ISO-8859-15
|
|
||||||
fa_IR UTF-8
|
|
||||||
ff_SN UTF-8
|
|
||||||
fi_FI ISO-8859-1
|
|
||||||
fi_FI.UTF-8 UTF-8
|
|
||||||
fi_FI@euro ISO-8859-15
|
|
||||||
fil_PH UTF-8
|
|
||||||
fo_FO ISO-8859-1
|
|
||||||
fo_FO.UTF-8 UTF-8
|
|
||||||
fr_BE ISO-8859-1
|
|
||||||
fr_BE.UTF-8 UTF-8
|
|
||||||
fr_BE@euro ISO-8859-15
|
|
||||||
fr_CA ISO-8859-1
|
|
||||||
fr_CA.UTF-8 UTF-8
|
|
||||||
fr_CH ISO-8859-1
|
|
||||||
fr_CH.UTF-8 UTF-8
|
|
||||||
fr_FR ISO-8859-1
|
|
||||||
fr_FR.UTF-8 UTF-8
|
|
||||||
fr_FR@euro ISO-8859-15
|
|
||||||
fr_LU ISO-8859-1
|
|
||||||
fr_LU.UTF-8 UTF-8
|
|
||||||
fr_LU@euro ISO-8859-15
|
|
||||||
fur_IT UTF-8
|
|
||||||
fy_DE UTF-8
|
|
||||||
fy_NL UTF-8
|
|
||||||
ga_IE ISO-8859-1
|
|
||||||
ga_IE.UTF-8 UTF-8
|
|
||||||
ga_IE@euro ISO-8859-15
|
|
||||||
gd_GB ISO-8859-15
|
|
||||||
gd_GB.UTF-8 UTF-8
|
|
||||||
gez_ER UTF-8
|
|
||||||
gez_ER@abegede UTF-8
|
|
||||||
gez_ET UTF-8
|
|
||||||
gez_ET@abegede UTF-8
|
|
||||||
gl_ES ISO-8859-1
|
|
||||||
gl_ES.UTF-8 UTF-8
|
|
||||||
gl_ES@euro ISO-8859-15
|
|
||||||
gu_IN UTF-8
|
|
||||||
gv_GB ISO-8859-1
|
|
||||||
gv_GB.UTF-8 UTF-8
|
|
||||||
ha_NG UTF-8
|
|
||||||
hak_TW UTF-8
|
|
||||||
he_IL ISO-8859-8
|
|
||||||
he_IL.UTF-8 UTF-8
|
|
||||||
hi_IN UTF-8
|
|
||||||
hne_IN UTF-8
|
|
||||||
hr_HR ISO-8859-2
|
|
||||||
hr_HR.UTF-8 UTF-8
|
|
||||||
hsb_DE ISO-8859-2
|
|
||||||
hsb_DE.UTF-8 UTF-8
|
|
||||||
ht_HT UTF-8
|
|
||||||
hu_HU ISO-8859-2
|
|
||||||
hu_HU.UTF-8 UTF-8
|
|
||||||
hy_AM UTF-8
|
|
||||||
hy_AM.ARMSCII-8 ARMSCII-8
|
|
||||||
ia_FR UTF-8
|
|
||||||
id_ID ISO-8859-1
|
|
||||||
id_ID.UTF-8 UTF-8
|
|
||||||
ig_NG UTF-8
|
|
||||||
ik_CA UTF-8
|
|
||||||
is_IS ISO-8859-1
|
|
||||||
is_IS.UTF-8 UTF-8
|
|
||||||
it_CH ISO-8859-1
|
|
||||||
it_CH.UTF-8 UTF-8
|
|
||||||
it_IT ISO-8859-1
|
|
||||||
it_IT.UTF-8 UTF-8
|
|
||||||
it_IT@euro ISO-8859-15
|
|
||||||
iu_CA UTF-8
|
|
||||||
ja_JP.EUC-JP EUC-JP
|
|
||||||
ja_JP.UTF-8 UTF-8
|
|
||||||
ka_GE GEORGIAN-PS
|
|
||||||
ka_GE.UTF-8 UTF-8
|
|
||||||
kk_KZ PT154
|
|
||||||
kk_KZ.RK1048 RK1048
|
|
||||||
kk_KZ.UTF-8 UTF-8
|
|
||||||
kl_GL ISO-8859-1
|
|
||||||
kl_GL.UTF-8 UTF-8
|
|
||||||
km_KH UTF-8
|
|
||||||
kn_IN UTF-8
|
|
||||||
ko_KR.EUC-KR EUC-KR
|
|
||||||
ko_KR.UTF-8 UTF-8
|
|
||||||
kok_IN UTF-8
|
|
||||||
ks_IN UTF-8
|
|
||||||
ks_IN@devanagari UTF-8
|
|
||||||
ku_TR ISO-8859-9
|
|
||||||
ku_TR.UTF-8 UTF-8
|
|
||||||
kw_GB ISO-8859-1
|
|
||||||
kw_GB.UTF-8 UTF-8
|
|
||||||
ky_KG UTF-8
|
|
||||||
lb_LU UTF-8
|
|
||||||
lg_UG ISO-8859-10
|
|
||||||
lg_UG.UTF-8 UTF-8
|
|
||||||
li_BE UTF-8
|
|
||||||
li_NL UTF-8
|
|
||||||
lij_IT UTF-8
|
|
||||||
ln_CD UTF-8
|
|
||||||
lo_LA UTF-8
|
|
||||||
lt_LT ISO-8859-13
|
|
||||||
lt_LT.UTF-8 UTF-8
|
|
||||||
lv_LV ISO-8859-13
|
|
||||||
lv_LV.UTF-8 UTF-8
|
|
||||||
lzh_TW UTF-8
|
|
||||||
mag_IN UTF-8
|
|
||||||
mai_IN UTF-8
|
|
||||||
mg_MG ISO-8859-15
|
|
||||||
mg_MG.UTF-8 UTF-8
|
|
||||||
mhr_RU UTF-8
|
|
||||||
mi_NZ ISO-8859-13
|
|
||||||
mi_NZ.UTF-8 UTF-8
|
|
||||||
mk_MK ISO-8859-5
|
|
||||||
mk_MK.UTF-8 UTF-8
|
|
||||||
ml_IN UTF-8
|
|
||||||
mn_MN UTF-8
|
|
||||||
mni_IN UTF-8
|
|
||||||
mr_IN UTF-8
|
|
||||||
ms_MY ISO-8859-1
|
|
||||||
ms_MY.UTF-8 UTF-8
|
|
||||||
mt_MT ISO-8859-3
|
|
||||||
mt_MT.UTF-8 UTF-8
|
|
||||||
my_MM UTF-8
|
|
||||||
nan_TW UTF-8
|
|
||||||
nan_TW@latin UTF-8
|
|
||||||
nb_NO ISO-8859-1
|
|
||||||
nb_NO.UTF-8 UTF-8
|
|
||||||
nds_DE UTF-8
|
|
||||||
nds_NL UTF-8
|
|
||||||
ne_NP UTF-8
|
|
||||||
nhn_MX UTF-8
|
|
||||||
niu_NU UTF-8
|
|
||||||
niu_NZ UTF-8
|
|
||||||
nl_AW UTF-8
|
|
||||||
nl_BE ISO-8859-1
|
|
||||||
nl_BE.UTF-8 UTF-8
|
|
||||||
nl_BE@euro ISO-8859-15
|
|
||||||
nl_NL ISO-8859-1
|
|
||||||
nl_NL.UTF-8 UTF-8
|
|
||||||
nl_NL@euro ISO-8859-15
|
|
||||||
nn_NO ISO-8859-1
|
|
||||||
nn_NO.UTF-8 UTF-8
|
|
||||||
nr_ZA UTF-8
|
|
||||||
nso_ZA UTF-8
|
|
||||||
oc_FR ISO-8859-1
|
|
||||||
oc_FR.UTF-8 UTF-8
|
|
||||||
om_ET UTF-8
|
|
||||||
om_KE ISO-8859-1
|
|
||||||
om_KE.UTF-8 UTF-8
|
|
||||||
or_IN UTF-8
|
|
||||||
os_RU UTF-8
|
|
||||||
pa_IN UTF-8
|
|
||||||
pa_PK UTF-8
|
|
||||||
pap_AW UTF-8
|
|
||||||
pap_CW UTF-8
|
|
||||||
pl_PL ISO-8859-2
|
|
||||||
pl_PL.UTF-8 UTF-8
|
|
||||||
ps_AF UTF-8
|
|
||||||
pt_BR ISO-8859-1
|
|
||||||
pt_BR.UTF-8 UTF-8
|
|
||||||
pt_PT ISO-8859-1
|
|
||||||
pt_PT.UTF-8 UTF-8
|
|
||||||
pt_PT@euro ISO-8859-15
|
|
||||||
quz_PE UTF-8
|
|
||||||
raj_IN UTF-8
|
|
||||||
ro_RO ISO-8859-2
|
|
||||||
ro_RO.UTF-8 UTF-8
|
|
||||||
ru_RU ISO-8859-5
|
|
||||||
ru_RU.CP1251 CP1251
|
|
||||||
ru_RU.KOI8-R KOI8-R
|
|
||||||
ru_RU.UTF-8 UTF-8
|
|
||||||
ru_UA KOI8-U
|
|
||||||
ru_UA.UTF-8 UTF-8
|
|
||||||
rw_RW UTF-8
|
|
||||||
sa_IN UTF-8
|
|
||||||
sat_IN UTF-8
|
|
||||||
sc_IT UTF-8
|
|
||||||
sd_IN UTF-8
|
|
||||||
sd_IN@devanagari UTF-8
|
|
||||||
se_NO UTF-8
|
|
||||||
sgs_LT UTF-8
|
|
||||||
shs_CA UTF-8
|
|
||||||
si_LK UTF-8
|
|
||||||
sid_ET UTF-8
|
|
||||||
sk_SK ISO-8859-2
|
|
||||||
sk_SK.UTF-8 UTF-8
|
|
||||||
sl_SI ISO-8859-2
|
|
||||||
sl_SI.UTF-8 UTF-8
|
|
||||||
so_DJ ISO-8859-1
|
|
||||||
so_DJ.UTF-8 UTF-8
|
|
||||||
so_ET UTF-8
|
|
||||||
so_KE ISO-8859-1
|
|
||||||
so_KE.UTF-8 UTF-8
|
|
||||||
so_SO ISO-8859-1
|
|
||||||
so_SO.UTF-8 UTF-8
|
|
||||||
sq_AL ISO-8859-1
|
|
||||||
sq_AL.UTF-8 UTF-8
|
|
||||||
sq_MK UTF-8
|
|
||||||
sr_ME UTF-8
|
|
||||||
sr_RS UTF-8
|
|
||||||
sr_RS@latin UTF-8
|
|
||||||
ss_ZA UTF-8
|
|
||||||
st_ZA ISO-8859-1
|
|
||||||
st_ZA.UTF-8 UTF-8
|
|
||||||
sv_FI ISO-8859-1
|
|
||||||
sv_FI.UTF-8 UTF-8
|
|
||||||
sv_FI@euro ISO-8859-15
|
|
||||||
sv_SE ISO-8859-1
|
|
||||||
sv_SE.ISO-8859-15 ISO-8859-15
|
|
||||||
sv_SE.UTF-8 UTF-8
|
|
||||||
sw_KE UTF-8
|
|
||||||
sw_TZ UTF-8
|
|
||||||
szl_PL UTF-8
|
|
||||||
ta_IN UTF-8
|
|
||||||
ta_LK UTF-8
|
|
||||||
tcy_IN.UTF-8 UTF-8
|
|
||||||
te_IN UTF-8
|
|
||||||
tg_TJ KOI8-T
|
|
||||||
tg_TJ.UTF-8 UTF-8
|
|
||||||
th_TH TIS-620
|
|
||||||
th_TH.UTF-8 UTF-8
|
|
||||||
the_NP UTF-8
|
|
||||||
ti_ER UTF-8
|
|
||||||
ti_ET UTF-8
|
|
||||||
tig_ER UTF-8
|
|
||||||
tk_TM UTF-8
|
|
||||||
tl_PH ISO-8859-1
|
|
||||||
tl_PH.UTF-8 UTF-8
|
|
||||||
tn_ZA UTF-8
|
|
||||||
tr_CY ISO-8859-9
|
|
||||||
tr_CY.UTF-8 UTF-8
|
|
||||||
tr_TR ISO-8859-9
|
|
||||||
tr_TR.UTF-8 UTF-8
|
|
||||||
ts_ZA UTF-8
|
|
||||||
tt_RU UTF-8
|
|
||||||
tt_RU@iqtelif UTF-8
|
|
||||||
ug_CN UTF-8
|
|
||||||
uk_UA KOI8-U
|
|
||||||
uk_UA.UTF-8 UTF-8
|
|
||||||
unm_US UTF-8
|
|
||||||
ur_IN UTF-8
|
|
||||||
ur_PK UTF-8
|
|
||||||
uz_UZ ISO-8859-1
|
|
||||||
uz_UZ.UTF-8 UTF-8
|
|
||||||
uz_UZ@cyrillic UTF-8
|
|
||||||
ve_ZA UTF-8
|
|
||||||
vi_VN UTF-8
|
|
||||||
wa_BE ISO-8859-1
|
|
||||||
wa_BE.UTF-8 UTF-8
|
|
||||||
wa_BE@euro ISO-8859-15
|
|
||||||
wae_CH UTF-8
|
|
||||||
wal_ET UTF-8
|
|
||||||
wo_SN UTF-8
|
|
||||||
xh_ZA ISO-8859-1
|
|
||||||
xh_ZA.UTF-8 UTF-8
|
|
||||||
yi_US CP1255
|
|
||||||
yi_US.UTF-8 UTF-8
|
|
||||||
yo_NG UTF-8
|
|
||||||
yue_HK UTF-8
|
|
||||||
zh_CN GB2312
|
|
||||||
zh_CN.GB18030 GB18030
|
|
||||||
zh_CN.GBK GBK
|
|
||||||
zh_CN.UTF-8 UTF-8
|
|
||||||
zh_HK BIG5-HKSCS
|
|
||||||
zh_HK.UTF-8 UTF-8
|
|
||||||
zh_SG GB2312
|
|
||||||
zh_SG.GBK GBK
|
|
||||||
zh_SG.UTF-8 UTF-8
|
|
||||||
zh_TW BIG5
|
|
||||||
zh_TW.EUC-TW EUC-TW
|
|
||||||
zh_TW.UTF-8 UTF-8
|
|
||||||
zu_ZA ISO-8859-1
|
|
||||||
zu_ZA.UTF-8 UTF-8
|
|
||||||
zu_ZA.UTF-8 UTF-8
|
|
|
@ -119,8 +119,8 @@ fi
|
||||||
|
|
||||||
# Optimise PostgreSQL shared memory for PostGIS
|
# Optimise PostgreSQL shared memory for PostGIS
|
||||||
# shmall units are pages and shmmax units are bytes(?) equivalent to the desired shared_buffer size set in setup_conf.sh - in this case 500MB
|
# shmall units are pages and shmmax units are bytes(?) equivalent to the desired shared_buffer size set in setup_conf.sh - in this case 500MB
|
||||||
echo "kernel.shmmax=543252480" >> /etc/sysctl.conf
|
echo "kernel.shmmax=${KERNEL_SHMMAX}" >> /etc/sysctl.conf
|
||||||
echo "kernel.shmall=2097152" >> /etc/sysctl.conf
|
echo "kernel.shmall=${KERNEL_SHMALL}" >> /etc/sysctl.conf
|
||||||
|
|
||||||
# Put lock file to make sure conf was not reinitialized
|
# Put lock file to make sure conf was not reinitialized
|
||||||
touch "${SETUP_LOCKFILE}"
|
touch "${SETUP_LOCKFILE}"
|
||||||
|
|
|
@ -88,7 +88,7 @@ trap "echo \"Sending SIGTERM to postgres\"; killall -s SIGTERM postgres" SIGTERM
|
||||||
su - postgres -c "${POSTGRES} -D ${DATADIR} -c config_file=${CONF} ${LOCALONLY} &"
|
su - postgres -c "${POSTGRES} -D ${DATADIR} -c config_file=${CONF} ${LOCALONLY} &"
|
||||||
|
|
||||||
# wait for postgres to come up
|
# wait for postgres to come up
|
||||||
until su - postgres -c "pg_isready"; do
|
until su - postgres -c "/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_isready"; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
echo "postgres ready"
|
echo "postgres ready"
|
||||||
|
|
|
@ -9,7 +9,7 @@ source /scripts/env-data.sh
|
||||||
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||||
function START_COMMAND() {
|
function START_COMMAND() {
|
||||||
PARAM=$1
|
PARAM=$1
|
||||||
gosu ${USER_NAME} bash -c "$1"
|
gosu "${USER_NAME}" bash -c "$1"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
function START_COMMAND() {
|
function START_COMMAND() {
|
||||||
|
@ -29,26 +29,48 @@ if [[ "$WAL_LEVEL" == 'replica' && "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
until START_COMMAND "/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_isready -h ${REPLICATE_FROM} -p ${REPLICATE_PORT}"
|
if [[ "${PROMOTE_MASTER}" =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||||
do
|
|
||||||
echo -e "[Entrypoint] \e[1;31m Waiting for master to ping... \033[0m"
|
|
||||||
sleep 1s
|
|
||||||
done
|
|
||||||
if [[ "$DESTROY_DATABASE_ON_RESTART" =~ [Tt][Rr][Uu][Ee] ]]; then
|
|
||||||
echo -e "[Entrypoint] \e[1;31m Get initial database from master \033[0m"
|
|
||||||
configure_replication_permissions
|
|
||||||
if [ -f "${DATADIR}/backup_label.old" ]; then
|
|
||||||
echo -e "[Entrypoint] \e[1;31m PG Basebackup already exists so proceed to start the DB \033[0m"
|
|
||||||
else
|
|
||||||
streaming_replication
|
|
||||||
|
|
||||||
|
until START_COMMAND "/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/pg_isready -h ${REPLICATE_FROM} -p ${REPLICATE_PORT}"
|
||||||
|
do
|
||||||
|
echo -e "[Entrypoint] \e[1;31m Waiting for master to ping... \033[0m"
|
||||||
|
sleep 1s
|
||||||
|
done
|
||||||
|
if [[ "$DESTROY_DATABASE_ON_RESTART" =~ [Tt][Rr][Uu][Ee] ]]; then
|
||||||
|
echo -e "[Entrypoint] \e[1;31m Get initial database from master \033[0m"
|
||||||
|
configure_replication_permissions
|
||||||
|
if [ -f "${DATADIR}/backup_label.old" ]; then
|
||||||
|
echo -e "[Entrypoint] \e[1;31m PG Basebackup already exists so proceed to start the DB \033[0m"
|
||||||
|
else
|
||||||
|
streaming_replication
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
if [ ! -f "${DATADIR}/backup_label.old" ]; then
|
||||||
|
echo "Streaming replication hasn't been started yet"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if [[ ${RUN_AS_ROOT} =~ [Ff][Aa][Ll][Ss][Ee] ]];then
|
||||||
|
chown -R "${USER_NAME}":"${DB_GROUP_NAME}" /var/run/postgresql
|
||||||
|
START_COMMAND "/etc/init.d/postgresql start ${POSTGRES_MAJOR_VERSION}"
|
||||||
|
|
||||||
|
else
|
||||||
|
START_COMMAND "/etc/init.d/postgresql start ${POSTGRES_MAJOR_VERSION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
STANDBY_MODE=$(START_COMMAND "${DATA_DIR_CONTROL} $DATADIR" | grep "Database cluster state:")
|
||||||
|
if [[ "$STANDBY_MODE" == *"in archive recovery"* ]]; then
|
||||||
|
START_COMMAND "${NODE_PROMOTION} promote -D ${DATADIR}"
|
||||||
|
fi
|
||||||
|
echo -e "\e[32m [Entrypoint] Replicant has been promoted to master, please shut down \e[1;31m pg-master \033[0m"
|
||||||
|
kill_postgres
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
# Promote to master if desired
|
|
||||||
if [[ ! -z "${PROMOTE_MASTER}" ]]; then
|
|
||||||
${START_COMMAND} "${NODE_PROMOTION} promote -D ${DATADIR}"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#end main if
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue