kopia lustrzana https://github.com/kartoza/docker-postgis
commit
c8f7978644
|
@ -0,0 +1,18 @@
|
||||||
|
## Example environment file for docker-compose and builders
|
||||||
|
|
||||||
|
COMPOSE_PROJECT_NAME=postgis
|
||||||
|
|
||||||
|
## For build arguments
|
||||||
|
DISTRO=debian
|
||||||
|
IMAGE_VERSION=bullseye
|
||||||
|
IMAGE_VARIANT=slim
|
||||||
|
# Set GENERATE_ALL_LOCALE to empty value or 0 to build just default LOCALE: en_US.UTF-8
|
||||||
|
GENERATE_ALL_LOCALE=1
|
||||||
|
# Set the language if you need to specify LANG locale at build time
|
||||||
|
LANG=en_US.UTF-8
|
||||||
|
# locale filter to include in the locale generator
|
||||||
|
LANGS="en_US.UTF-8,id_ID.UTF-8"
|
||||||
|
|
||||||
|
POSTGRES_MAJOR_VERSION=13
|
||||||
|
POSTGIS_MAJOR_VERSION=3
|
||||||
|
POSTGIS_MINOR_RELEASE=1
|
|
@ -0,0 +1,197 @@
|
||||||
|
name: build-latest
|
||||||
|
on:
|
||||||
|
# workflow_dispatch:
|
||||||
|
# inputs:
|
||||||
|
# distro:
|
||||||
|
# description: Base image distro
|
||||||
|
# required: true
|
||||||
|
# default: debian
|
||||||
|
# imageVersion:
|
||||||
|
# description: Base distro image version/release
|
||||||
|
# required: true
|
||||||
|
# default: bullseye
|
||||||
|
# imageVariant:
|
||||||
|
# description: Base image variant
|
||||||
|
# required: true
|
||||||
|
# default: slim
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
jobs:
|
||||||
|
build-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
latest-ref: refs/heads/develop
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
postgresMajorVersion:
|
||||||
|
- 13
|
||||||
|
postgisMajorVersion:
|
||||||
|
- 3
|
||||||
|
postgisMinorRelease:
|
||||||
|
- 1
|
||||||
|
include:
|
||||||
|
- distro: debian
|
||||||
|
imageVersion: bullseye
|
||||||
|
imageVariant: slim
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
- name: Get build cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
# Build inputs are:
|
||||||
|
# - Dockerfile recipe
|
||||||
|
# - docker-compose.build.yml
|
||||||
|
# - build args (.example.env)
|
||||||
|
# - base_build directory
|
||||||
|
# - scripts directory
|
||||||
|
key: buildx-${{ hashFiles('Dockerfile', 'docker-compose.build.yml', '.example.env', 'base_build', 'scripts') }}-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
buildx-${{ hashFiles('Dockerfile', 'docker-compose.build.yml', '.example.env', 'base_build', 'scripts') }}-
|
||||||
|
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Build base image
|
||||||
|
id: docker_build_base
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
push: false
|
||||||
|
load: true
|
||||||
|
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:base-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ matrix.distro }}
|
||||||
|
IMAGE_VERSION=${{ matrix.imageVersion }}
|
||||||
|
IMAGE_VARIANT=${{ matrix.imageVariant }}
|
||||||
|
LANGS=en_US.UTF-8,id_ID.UTF-8
|
||||||
|
GENERATE_ALL_LOCALE=0
|
||||||
|
POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }}
|
||||||
|
POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }}
|
||||||
|
POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache
|
||||||
|
target: postgis-base
|
||||||
|
|
||||||
|
- name: Build prod image
|
||||||
|
id: docker_build_prod
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
push: false
|
||||||
|
load: true
|
||||||
|
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }}-${{ matrix.postgisMajorVersion }}.${{ matrix.postgisMinorRelease }}
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ matrix.distro }}
|
||||||
|
IMAGE_VERSION=${{ matrix.imageVersion }}
|
||||||
|
IMAGE_VARIANT=${{ matrix.imageVariant }}
|
||||||
|
LANGS=en_US.UTF-8,id_ID.UTF-8
|
||||||
|
GENERATE_ALL_LOCALE=0
|
||||||
|
POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }}
|
||||||
|
POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }}
|
||||||
|
POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache
|
||||||
|
target: postgis-prod
|
||||||
|
|
||||||
|
- name: Build image for testing
|
||||||
|
id: docker_build_testing_image
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
push: false
|
||||||
|
load: true
|
||||||
|
tags: kartoza/postgis:manual-build
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ matrix.distro }}
|
||||||
|
IMAGE_VERSION=${{ matrix.imageVersion }}
|
||||||
|
IMAGE_VARIANT=${{ matrix.imageVariant }}
|
||||||
|
LANGS=en_US.UTF-8,id_ID.UTF-8
|
||||||
|
GENERATE_ALL_LOCALE=0
|
||||||
|
POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }}
|
||||||
|
POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }}
|
||||||
|
POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache
|
||||||
|
target: postgis-test
|
||||||
|
|
||||||
|
run-scenario-tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [ build-image ]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
postgresMajorVersion:
|
||||||
|
- 13
|
||||||
|
postgisMajorVersion:
|
||||||
|
- 3
|
||||||
|
postgisMinorRelease:
|
||||||
|
- 1
|
||||||
|
scenario:
|
||||||
|
- datadir_init
|
||||||
|
- streaming_replication
|
||||||
|
- collations
|
||||||
|
- extensions
|
||||||
|
- logical_replication
|
||||||
|
include:
|
||||||
|
- distro: debian
|
||||||
|
imageVersion: bullseye
|
||||||
|
imageVariant: slim
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
- name: Get build cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
# Build inputs are:
|
||||||
|
# - Dockerfile recipe
|
||||||
|
# - docker-compose.build.yml
|
||||||
|
# - build args (.example.env)
|
||||||
|
# - base_build directory
|
||||||
|
# - scripts directory
|
||||||
|
key: buildx-${{ hashFiles('Dockerfile', 'docker-compose.build.yml', '.example.env', 'base_build', 'scripts') }}-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
buildx-${{ hashFiles('Dockerfile', 'docker-compose.build.yml', '.example.env', 'base_build', 'scripts') }}-
|
||||||
|
|
||||||
|
- name: Build image for testing
|
||||||
|
id: docker_build_testing_image
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
push: false
|
||||||
|
load: true
|
||||||
|
tags: kartoza/postgis:manual-build
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ matrix.distro }}
|
||||||
|
IMAGE_VERSION=${{ matrix.imageVersion }}
|
||||||
|
IMAGE_VARIANT=${{ matrix.imageVariant }}
|
||||||
|
LANGS=en_US.UTF-8,id_ID.UTF-8
|
||||||
|
GENERATE_ALL_LOCALE=0
|
||||||
|
POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }}
|
||||||
|
POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }}
|
||||||
|
POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
target: postgis-test
|
||||||
|
|
||||||
|
- name: Run scenario test
|
||||||
|
env:
|
||||||
|
COMPOSE_INTERACTIVE_NO_CLI: 1
|
||||||
|
PRINT_TEST_LOGS: 1
|
||||||
|
run: |
|
||||||
|
pushd scenario_tests/${{ matrix.scenario }}
|
||||||
|
./test.sh
|
||||||
|
popd
|
|
@ -0,0 +1,106 @@
|
||||||
|
name: deploy-image
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
# inputs:
|
||||||
|
# distro:
|
||||||
|
# description: Base image distro
|
||||||
|
# required: true
|
||||||
|
# default: debian
|
||||||
|
# imageVersion:
|
||||||
|
# description: Base distro image version/release
|
||||||
|
# required: true
|
||||||
|
# default: bullseye
|
||||||
|
# imageVariant:
|
||||||
|
# description: Base image variant
|
||||||
|
# required: true
|
||||||
|
# default: slim
|
||||||
|
workflow_run:
|
||||||
|
workflows:
|
||||||
|
- build-latest
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
jobs:
|
||||||
|
deploy-image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
latest-ref: refs/heads/develop
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
postgresMajorVersion:
|
||||||
|
- 13
|
||||||
|
postgisMajorVersion:
|
||||||
|
- 3
|
||||||
|
postgisMinorRelease:
|
||||||
|
- 1
|
||||||
|
include:
|
||||||
|
- distro: debian
|
||||||
|
imageVersion: bullseye
|
||||||
|
imageVariant: slim
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
- name: Get build cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
# Build inputs are:
|
||||||
|
# - Dockerfile recipe
|
||||||
|
# - docker-compose.build.yml
|
||||||
|
# - build args (.example.env)
|
||||||
|
# - base_build directory
|
||||||
|
# - scripts directory
|
||||||
|
key: buildx-${{ hashFiles('Dockerfile', 'docker-compose.build.yml', '.example.env', 'base_build', 'scripts') }}-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
buildx-${{ hashFiles('Dockerfile', 'docker-compose.build.yml', '.example.env', 'base_build', 'scripts') }}-
|
||||||
|
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Build base image
|
||||||
|
id: docker_build_base
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:base-${{ matrix.distro }}-${{ matrix.imageVersion }}-${{ matrix.imageVariant }}
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ matrix.distro }}
|
||||||
|
IMAGE_VERSION=${{ matrix.imageVersion }}
|
||||||
|
IMAGE_VARIANT=${{ matrix.imageVariant }}
|
||||||
|
GENERATE_ALL_LOCALE=1
|
||||||
|
POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }}
|
||||||
|
POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }}
|
||||||
|
POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
target: postgis-base
|
||||||
|
|
||||||
|
- name: Build prod image
|
||||||
|
id: docker_build_prod
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
push: true
|
||||||
|
load: true
|
||||||
|
tags: ${{ secrets.DOCKERHUB_REPO }}/postgis:${{ matrix.postgresMajorVersion }}-${{ matrix.postgisMajorVersion }}.${{ matrix.postgisMinorRelease }}
|
||||||
|
build-args: |
|
||||||
|
DISTRO=${{ matrix.distro }}
|
||||||
|
IMAGE_VERSION=${{ matrix.imageVersion }}
|
||||||
|
IMAGE_VARIANT=${{ matrix.imageVariant }}
|
||||||
|
GENERATE_ALL_LOCALE=1
|
||||||
|
POSTGRES_MAJOR_VERSION=${{ matrix.postgresMajorVersion }}
|
||||||
|
POSTGIS_MAJOR_VERSION=${{ matrix.postgisMajorVersion }}
|
||||||
|
POSTGIS_MINOR_VERSION=${{ matrix.postgresMinorVersion }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
target: postgis-prod
|
|
@ -5,4 +5,7 @@
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.python-version
|
.python-version
|
||||||
venv
|
venv
|
||||||
|
.venv
|
||||||
__pycache__
|
__pycache__
|
||||||
|
|
||||||
|
.env
|
||||||
|
|
24
.travis.yml
24
.travis.yml
|
@ -1,24 +0,0 @@
|
||||||
sudo: required
|
|
||||||
|
|
||||||
language: python
|
|
||||||
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
python:
|
|
||||||
- '3.7'
|
|
||||||
|
|
||||||
env:
|
|
||||||
- SCENARIO=datadir_init
|
|
||||||
- SCENARIO=replications
|
|
||||||
- SCENARIO=collations
|
|
||||||
- SCENARIO=extensions
|
|
||||||
- SCENARIO=logical_replication
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- ./build-test.sh
|
|
||||||
|
|
||||||
script:
|
|
||||||
- pushd scenario_tests/${SCENARIO}
|
|
||||||
- ./test.sh
|
|
||||||
- popd
|
|
103
Dockerfile
103
Dockerfile
|
@ -1,19 +1,85 @@
|
||||||
#--------- Generic stuff all our Dockerfiles should start with so we get caching ------------
|
##############################################################################
|
||||||
|
# Base stage #
|
||||||
|
##############################################################################
|
||||||
ARG DISTRO=debian
|
ARG DISTRO=debian
|
||||||
ARG IMAGE_VERSION=buster
|
ARG IMAGE_VERSION=bullseye
|
||||||
ARG IMAGE_VARIANT=slim
|
ARG IMAGE_VARIANT=slim
|
||||||
FROM kartoza/postgis:$DISTRO-$IMAGE_VERSION-$IMAGE_VARIANT
|
FROM $DISTRO:$IMAGE_VERSION-$IMAGE_VARIANT AS postgis-base
|
||||||
|
MAINTAINER Tim Sutton<tim@kartoza.com>
|
||||||
|
|
||||||
|
# Reset ARG for version
|
||||||
|
ARG IMAGE_VERSION
|
||||||
|
|
||||||
|
RUN apt-get -qq update --fix-missing && apt-get -qq --yes upgrade
|
||||||
|
|
||||||
|
RUN set -eux \
|
||||||
|
&& export DEBIAN_FRONTEND=noninteractive \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get -y --no-install-recommends install \
|
||||||
|
locales gnupg2 wget ca-certificates rpl pwgen software-properties-common iputils-ping \
|
||||||
|
apt-transport-https curl \
|
||||||
|
&& dpkg-divert --local --rename --add /sbin/initctl
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RUN apt-get -y update; apt-get -y install build-essential autoconf libxml2-dev zlib1g-dev netcat gdal-bin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Temporary - PostgreSQL requires this which is not available in bullseye
|
||||||
|
ADD base_build/gdal_install.sh /gdal_install.sh
|
||||||
|
RUN chmod 0755 /gdal_install.sh;/bin/bash /gdal_install.sh
|
||||||
|
|
||||||
|
# Generating locales takes a long time. Utilize caching by runnig it by itself
|
||||||
|
# early in the build process.
|
||||||
|
|
||||||
|
# Generate all locale only on deployment mode build
|
||||||
|
# Set to empty string to generate only default locale
|
||||||
|
ARG GENERATE_ALL_LOCALE=1
|
||||||
|
ARG LANGS="en_US.UTF-8,id_ID.UTF-8"
|
||||||
|
ARG LANG=en_US.UTF-8
|
||||||
|
ENV LANG=en_US.UTF-8 \
|
||||||
|
LANGUAGE=en_US:en \
|
||||||
|
LC_ALL=en_US.UTF-8
|
||||||
|
|
||||||
|
COPY base_build/scripts/locale.gen /etc/all.locale.gen
|
||||||
|
COPY base_build/scripts/locale-filter.sh /etc/locale-filter.sh
|
||||||
|
RUN if [ -z "${GENERATE_ALL_LOCALE}" ] || [ $GENERATE_ALL_LOCALE -eq 0 ]; \
|
||||||
|
then \
|
||||||
|
cat /etc/all.locale.gen | grep "${LANG}" > /etc/locale.gen; \
|
||||||
|
/bin/bash /etc/locale-filter.sh; \
|
||||||
|
else \
|
||||||
|
cp -f /etc/all.locale.gen /etc/locale.gen; \
|
||||||
|
fi; \
|
||||||
|
set -eux \
|
||||||
|
&& /usr/sbin/locale-gen
|
||||||
|
|
||||||
|
RUN update-locale ${LANG}
|
||||||
|
|
||||||
|
# Cleanup resources
|
||||||
|
RUN apt-get -y --purge autoremove \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Production Stage #
|
||||||
|
##############################################################################
|
||||||
|
FROM postgis-base AS postgis-prod
|
||||||
|
|
||||||
MAINTAINER Tim Sutton<tim@kartoza.com>
|
MAINTAINER Tim Sutton<tim@kartoza.com>
|
||||||
|
|
||||||
# Reset ARG for version
|
# Reset ARG for version
|
||||||
ARG IMAGE_VERSION
|
ARG IMAGE_VERSION
|
||||||
ARG POSTGRES_MAJOR_VERSION=13
|
ARG POSTGRES_MAJOR_VERSION=13
|
||||||
ARG POSTGIS_MAJOR=3
|
ARG POSTGIS_MAJOR_VERSION=3
|
||||||
|
ARG POSTGIS_MINOR_RELEASE=1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RUN set -eux \
|
RUN set -eux \
|
||||||
&& export DEBIAN_FRONTEND=noninteractive \
|
&& export DEBIAN_FRONTEND=noninteractive \
|
||||||
&& apt-get upgrade;apt-get update \
|
&& apt-get update \
|
||||||
&& sh -c "echo \"deb http://apt.postgresql.org/pub/repos/apt/ ${IMAGE_VERSION}-pgdg main\" > /etc/apt/sources.list.d/pgdg.list" \
|
&& sh -c "echo \"deb http://apt.postgresql.org/pub/repos/apt/ ${IMAGE_VERSION}-pgdg main\" > /etc/apt/sources.list.d/pgdg.list" \
|
||||||
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc -O- | apt-key add - \
|
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc -O- | apt-key add - \
|
||||||
&& apt-get -y --purge autoremove \
|
&& apt-get -y --purge autoremove \
|
||||||
|
@ -32,15 +98,18 @@ RUN set -eux \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get -y --no-install-recommends install postgresql-client-${POSTGRES_MAJOR_VERSION} \
|
&& apt-get -y --no-install-recommends install postgresql-client-${POSTGRES_MAJOR_VERSION} \
|
||||||
postgresql-common postgresql-${POSTGRES_MAJOR_VERSION} \
|
postgresql-common postgresql-${POSTGRES_MAJOR_VERSION} \
|
||||||
postgresql-${POSTGRES_MAJOR_VERSION}-postgis-${POSTGIS_MAJOR} \
|
postgresql-${POSTGRES_MAJOR_VERSION}-postgis-${POSTGIS_MAJOR_VERSION} \
|
||||||
netcat postgresql-${POSTGRES_MAJOR_VERSION}-ogr-fdw \
|
netcat postgresql-${POSTGRES_MAJOR_VERSION}-ogr-fdw \
|
||||||
postgresql-${POSTGRES_MAJOR_VERSION}-postgis-${POSTGIS_MAJOR}-scripts \
|
postgresql-${POSTGRES_MAJOR_VERSION}-postgis-${POSTGIS_MAJOR_VERSION}-scripts \
|
||||||
postgresql-plpython3-${POSTGRES_MAJOR_VERSION} postgresql-${POSTGRES_MAJOR_VERSION}-pgrouting \
|
postgresql-plpython3-${POSTGRES_MAJOR_VERSION} postgresql-${POSTGRES_MAJOR_VERSION}-pgrouting \
|
||||||
postgresql-server-dev-${POSTGRES_MAJOR_VERSION} postgresql-${POSTGRES_MAJOR_VERSION}-cron
|
postgresql-server-dev-${POSTGRES_MAJOR_VERSION} postgresql-${POSTGRES_MAJOR_VERSION}-cron
|
||||||
|
|
||||||
|
|
||||||
RUN echo $POSTGRES_MAJOR_VERSION >/tmp/pg_version.txt
|
RUN echo $POSTGRES_MAJOR_VERSION >/tmp/pg_version.txt
|
||||||
|
RUN echo $POSTGIS_MAJOR_VERSION >/tmp/pg_major_version.txt
|
||||||
|
RUN echo $POSTGIS_MINOR_RELEASE >/tmp/pg_minor_version.txt
|
||||||
|
ENV \
|
||||||
|
PATH="$PATH:/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin"
|
||||||
# Compile pointcloud extension
|
# Compile pointcloud extension
|
||||||
|
|
||||||
RUN wget -O- https://github.com/pgpointcloud/pointcloud/archive/master.tar.gz | tar xz && \
|
RUN wget -O- https://github.com/pgpointcloud/pointcloud/archive/master.tar.gz | tar xz && \
|
||||||
|
@ -69,3 +138,21 @@ RUN set -eux \
|
||||||
VOLUME /var/lib/postgresql
|
VOLUME /var/lib/postgresql
|
||||||
|
|
||||||
ENTRYPOINT /scripts/docker-entrypoint.sh
|
ENTRYPOINT /scripts/docker-entrypoint.sh
|
||||||
|
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# Testing Stage #
|
||||||
|
##############################################################################
|
||||||
|
FROM postgis-prod AS postgis-test
|
||||||
|
|
||||||
|
COPY scenario_tests/utils/requirements.txt /lib/utils/requirements.txt
|
||||||
|
|
||||||
|
RUN set -eux \
|
||||||
|
&& export DEBIAN_FRONTEND=noninteractive \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get -y --no-install-recommends install python3-pip \
|
||||||
|
&& apt-get -y --purge autoremove \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN pip3 install -r /lib/utils/requirements.txt
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
#--------- Generic stuff all our Dockerfiles should start with so we get caching ------------
|
|
||||||
FROM kartoza/postgis:manual-build
|
|
||||||
|
|
||||||
# For testing
|
|
||||||
|
|
||||||
COPY scenario_tests/utils/requirements.txt /lib/utils/requirements.txt
|
|
||||||
|
|
||||||
RUN set -eux \
|
|
||||||
&& export DEBIAN_FRONTEND=noninteractive \
|
|
||||||
&& apt-get update \
|
|
||||||
&& apt-get -y --no-install-recommends install python3-pip \
|
|
||||||
&& apt-get -y --purge autoremove \
|
|
||||||
&& apt-get clean \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN pip3 install -r /lib/utils/requirements.txt
|
|
23
README.md
23
README.md
|
@ -59,8 +59,7 @@ docker pull kartoza/postgis:image_version
|
||||||
|
|
||||||
## Building the image
|
## Building the image
|
||||||
|
|
||||||
To build the image yourself without apt-cacher (also consumes more bandwidth
|
To build the image yourself do:
|
||||||
since deb packages need to be fetched each time you build) do:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
docker build -t kartoza/postgis git://github.com/kartoza/docker-postgis
|
docker build -t kartoza/postgis git://github.com/kartoza/docker-postgis
|
||||||
|
@ -79,7 +78,7 @@ Then do:
|
||||||
docker build -t kartoza/postgis .
|
docker build -t kartoza/postgis .
|
||||||
```
|
```
|
||||||
|
|
||||||
Or
|
Or build against a specific PostgreSQL version
|
||||||
|
|
||||||
```
|
```
|
||||||
docker build --build-arg POSTGRES_MAJOR_VERSION=13 --build-arg POSTGIS_MAJOR=3 -t kartoza/postgis:POSTGRES_MAJOR_VERSION .
|
docker build --build-arg POSTGRES_MAJOR_VERSION=13 --build-arg POSTGIS_MAJOR=3 -t kartoza/postgis:POSTGRES_MAJOR_VERSION .
|
||||||
|
@ -91,9 +90,10 @@ and `IMAGE_VARIANT` (=slim) which can be used to control the base image used
|
||||||
(but it still needs to be Debian based and have PostgreSQL official apt repo).
|
(but it still needs to be Debian based and have PostgreSQL official apt repo).
|
||||||
|
|
||||||
For example making Ubuntu 20.04 based build (for better arm64 support)
|
For example making Ubuntu 20.04 based build (for better arm64 support)
|
||||||
First build the base image using the branch `postgres-base` following instructions from [Kartoza base image builds](https://github.com/kartoza/docker-postgis/tree/postgres-base#alternative-base-distributions-builds)
|
First build the base image using instructions in the folder `base_build` using the
|
||||||
|
build script from [Kartoza base image builds](https://github.com/kartoza/docker-postgis/blob/develop/base_build/build.sh)
|
||||||
|
|
||||||
And then build the `PostGIS Image` using
|
Then build the `PostGIS Image` to match the base build
|
||||||
|
|
||||||
```
|
```
|
||||||
docker build --build-arg DISTRO=ubuntu --build-arg IMAGE_VERSION=focal --build-arg IMAGE_VARIANT="" -t kartoza/postgis .
|
docker build --build-arg DISTRO=ubuntu --build-arg IMAGE_VERSION=focal --build-arg IMAGE_VARIANT="" -t kartoza/postgis .
|
||||||
|
@ -105,14 +105,13 @@ By default, the image build will include **all** `locales` to cover any value fo
|
||||||
|
|
||||||
You can safely delete all `locales` except for the ones you need in `scripts/locale.gen`. This will speed up the build considerably.
|
You can safely delete all `locales` except for the ones you need in `scripts/locale.gen`. This will speed up the build considerably.
|
||||||
|
|
||||||
You can also run the container using the environment variables.
|
|
||||||
### Environment variables
|
### Environment variables
|
||||||
|
|
||||||
#### Cluster Initializations
|
#### Cluster Initializations
|
||||||
|
|
||||||
With minimum setup, our image will use initial cluster located in the
|
With a minimum setup, our image will use an initial cluster located in the
|
||||||
`DATADIR` environment variable. If you want to use persistence, mount these
|
`DATADIR` environment variable. If you want to use persistence, mount these
|
||||||
location into your volume/host. By default, `DATADIR` will point to `/var/lib/postgresql/{major-version}`.
|
locations into your volume/host. By default, `DATADIR` will point to `/var/lib/postgresql/{major-version}`.
|
||||||
You can instead mount the parent location like this:
|
You can instead mount the parent location like this:
|
||||||
|
|
||||||
* `-v data-volume:/var/lib/postgresql`
|
* `-v data-volume:/var/lib/postgresql`
|
||||||
|
@ -134,8 +133,8 @@ You need to specify different empty directory, like this
|
||||||
The containers will use above parameters to initialize a new db cluster in the
|
The containers will use above parameters to initialize a new db cluster in the
|
||||||
specified directory. If the directory is not empty, then initialization parameter will be ignored.
|
specified directory. If the directory is not empty, then initialization parameter will be ignored.
|
||||||
|
|
||||||
These are some initialization parameter that will only be used to initialize new cluster.
|
These are some initialization parameters that will only get used to initialize a new cluster.
|
||||||
If the container uses existing cluster, it will be ignored (for example, when the container restarts).
|
If the container uses an existing cluster, it is ignored (for example, when the container restarts).
|
||||||
|
|
||||||
* `DEFAULT_ENCODING`: cluster encoding
|
* `DEFAULT_ENCODING`: cluster encoding
|
||||||
* `DEFAULT_COLLATION`: cluster collation
|
* `DEFAULT_COLLATION`: cluster collation
|
||||||
|
@ -150,7 +149,7 @@ new db cluster.
|
||||||
|
|
||||||
* `RECREATE_DATADIR`: Force database reinitialization in the location `DATADIR`
|
* `RECREATE_DATADIR`: Force database reinitialization in the location `DATADIR`
|
||||||
|
|
||||||
If you used `RECREATE_DATADIR` and successfully created new cluster. Remember
|
If you used `RECREATE_DATADIR` and successfully created a new cluster. Remember
|
||||||
that you should remove this parameter afterwards. Because, if it was not omitted,
|
that you should remove this parameter afterwards. Because, if it was not omitted,
|
||||||
it will always recreate new db cluster after every container restarts.
|
it will always recreate new db cluster after every container restarts.
|
||||||
|
|
||||||
|
@ -236,7 +235,7 @@ Maximum size to let the WAL grow to between automatic WAL checkpoints.
|
||||||
* `-e MAINTAINANCE_WORK_MEM=128MB`
|
* `-e MAINTAINANCE_WORK_MEM=128MB`
|
||||||
|
|
||||||
#### Configure networking
|
#### Configure networking
|
||||||
You can open up the PG port by using the following environment variable. By default
|
You can open up the PG port by using the following environment variable. By default,
|
||||||
the container will allow connections only from the docker private subnet.
|
the container will allow connections only from the docker private subnet.
|
||||||
|
|
||||||
* `-e ALLOW_IP_RANGE=<0.0.0.0/0> By default`
|
* `-e ALLOW_IP_RANGE=<0.0.0.0/0> By default`
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
[](https://travis-ci.org/kartoza/docker-postgis)
|
||||||
|
|
||||||
|
# docker-postgis
|
||||||
|
|
||||||
|
A docker image that installs all the dependency for building `kartoza/postgis` image variants.
|
||||||
|
|
||||||
|
Visit our page on the docker hub at: https://hub.docker.com/r/kartoza/postgis/
|
||||||
|
|
||||||
|
|
||||||
|
#### Alternative base distributions builds
|
||||||
|
|
||||||
|
There are build args for `DISTRO` (=debian), `IMAGE_VERSION` (=buster)
|
||||||
|
and `IMAGE_VARIANT` (=slim) which can be used to control the base image used
|
||||||
|
(but it still needs to be Debian based and have PostgreSQL official apt repo).
|
||||||
|
|
||||||
|
For example making Ubuntu 20.04 based build (for better arm64 support)
|
||||||
|
First build the base image using the in the folder `base_build` using the
|
||||||
|
build script
|
||||||
|
following instructions from [Kartoza base image builds](https://github.com/kartoza/docker-postgis/tree/postgres-base#alternative-base-distributions-builds)
|
||||||
|
|
||||||
|
Then build the `PostGIS base Image` using
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build --build-arg DISTRO=ubuntu --build-arg IMAGE_VERSION=focal --build-arg IMAGE_VARIANT="" -t kartoza/postgis:$DISTRO-$IMAGE_VERSION-$IMAGE_VARIANT-base .
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Locales
|
||||||
|
|
||||||
|
By default, the image build will include **all** `locales` to cover any value for `locale` settings such as `DEFAULT_COLLATION`, `DEFAULT_CTYPE` or `DEFAULT_ENCODING`.
|
||||||
|
|
||||||
|
You can safely delete all `locales` except for the ones you need in `scripts/locale.gen`. This will speed up the build considerably.
|
||||||
|
|
||||||
|
### Support
|
||||||
|
|
||||||
|
If you require more substantial assistance from [kartoza](https://kartoza.com) (because our work and interaction on docker-postgis is pro bono),
|
||||||
|
please consider taking out a [Support Level Agreeement](https://kartoza.com/en/shop/product/support)
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
Tim Sutton (tim@kartoza.com)
|
||||||
|
Gavin Fleming (gavin@kartoza.com)
|
||||||
|
Rizky Maulana (rizky@kartoza.com)
|
||||||
|
Admire Nyakudya (admire@kartoza.com)
|
||||||
|
December 2020
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ ${IMAGE_VERSION} =~ [Bb][Uu][Ll][Ll][Ss][Ee][Yy][Ee] ]]; then
|
||||||
|
wget --progress=bar:force:noscroll -c --no-check-certificate http://ftp.br.debian.org/debian/pool/main/g/gdal/libgdal27_3.1.4+dfsg-1+b1_amd64.deb
|
||||||
|
dpkg -i libgdal27_3.1.4+dfsg-1+b1_amd64.deb
|
||||||
|
fi
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
## Filter list of locales from a given filter args
|
||||||
|
## Parse into array
|
||||||
|
LANG_ARR=(${LANGS//,/ })
|
||||||
|
echo "" > /etc/locale.gen
|
||||||
|
for i in "${LANG_ARR[@]}"; do
|
||||||
|
cat /etc/all.locale.gen | grep "$i" >> /etc/locale.gen
|
||||||
|
done
|
|
@ -0,0 +1,484 @@
|
||||||
|
# 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
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Building an debian base image
|
||||||
|
|
||||||
|
if [[ ! -f .env ]]; then
|
||||||
|
echo "Default build arguments don't exists. Creating one from default value."
|
||||||
|
cp .example.env .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker-compose -f docker-compose.build.yml build postgis-base
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# For scenario testing purposes
|
||||||
|
|
||||||
./build.sh
|
if [[ ! -f .env ]]; then
|
||||||
|
echo "Default build arguments don't exists. Creating one from default value."
|
||||||
|
cp .example.env .env
|
||||||
|
fi
|
||||||
|
|
||||||
docker build -t kartoza/postgis:manual-build -f Dockerfile.test .
|
docker-compose -f docker-compose.build.yml build postgis-test
|
||||||
|
|
9
build.sh
9
build.sh
|
@ -1,3 +1,8 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
docker build -t kartoza/postgis:manual-build .
|
|
||||||
docker build -t kartoza/postgis:13.0 .
|
if [[ ! -f .env ]]; then
|
||||||
|
echo "Default build arguments don't exists. Creating one from default value."
|
||||||
|
cp .example.env .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker-compose -f docker-compose.build.yml build postgis-prod
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Used solely for docker-compose build
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
postgis-base:
|
||||||
|
image: kartoza/postgis:base-${DISTRO}-${IMAGE_VERSION}-${IMAGE_VARIANT}
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
# Use yaml anchor for reusability
|
||||||
|
args: &build-args-anchor
|
||||||
|
DISTRO: ${DISTRO}
|
||||||
|
IMAGE_VERSION: ${IMAGE_VERSION}
|
||||||
|
IMAGE_VARIANT: ${IMAGE_VARIANT}
|
||||||
|
GENERATE_ALL_LOCALE: ${GENERATE_ALL_LOCALE}
|
||||||
|
POSTGRES_MAJOR_VERSION: ${POSTGRES_MAJOR_VERSION}
|
||||||
|
POSTGIS_MAJOR_VERSION: ${POSTGIS_MAJOR_VERSION}
|
||||||
|
POSTGIS_MINOR_RELEASE: ${POSTGIS_MINOR_RELEASE}
|
||||||
|
target: postgis-base
|
||||||
|
|
||||||
|
postgis-prod:
|
||||||
|
image: kartoza/postgis:${POSTGRES_MAJOR_VERSION}-${POSTGIS_MAJOR_VERSION}.${POSTGIS_MINOR_RELEASE}
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
<<: *build-args-anchor
|
||||||
|
target: postgis-prod
|
||||||
|
|
||||||
|
postgis-test:
|
||||||
|
image: kartoza/postgis:manual-build
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
args:
|
||||||
|
<<: *build-args-anchor
|
||||||
|
target: postgis-test
|
|
@ -7,7 +7,7 @@ volumes:
|
||||||
services:
|
services:
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: kartoza/postgis:12.0
|
image: kartoza/postgis:13.1
|
||||||
volumes:
|
volumes:
|
||||||
- postgis-data:/var/lib/postgresql
|
- postgis-data:/var/lib/postgresql
|
||||||
- dbbackups:/backups
|
- dbbackups:/backups
|
||||||
|
@ -26,7 +26,7 @@ services:
|
||||||
test: "exit 0"
|
test: "exit 0"
|
||||||
|
|
||||||
dbbackups:
|
dbbackups:
|
||||||
image: kartoza/pg-backup:12.0
|
image: kartoza/pg-backup:13.0
|
||||||
hostname: pg-backups
|
hostname: pg-backups
|
||||||
volumes:
|
volumes:
|
||||||
- dbbackups:/backups
|
- dbbackups:/backups
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
docker-compose==1.28
|
|
@ -8,6 +8,10 @@ source ../test-env.sh
|
||||||
# Run service
|
# Run service
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
|
|
||||||
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
docker-compose logs -f &
|
||||||
|
fi
|
||||||
|
|
||||||
sleep 30
|
sleep 30
|
||||||
|
|
||||||
services=("pg" "pg-new")
|
services=("pg" "pg-new")
|
||||||
|
@ -15,10 +19,12 @@ services=("pg" "pg-new")
|
||||||
for service in "${services[@]}"; do
|
for service in "${services[@]}"; do
|
||||||
|
|
||||||
# Execute tests
|
# Execute tests
|
||||||
until docker-compose exec $service pg_isready; do
|
until docker-compose exec -T $service pg_isready; do
|
||||||
sleep 30
|
sleep 30
|
||||||
|
echo "Wait service to be ready"
|
||||||
done;
|
done;
|
||||||
docker-compose exec $service /bin/bash /tests/test.sh
|
echo "Execute test for $service"
|
||||||
|
docker-compose exec -T $service /bin/bash /tests/test.sh
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,10 @@ source ../test-env.sh
|
||||||
# Run service
|
# Run service
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
|
|
||||||
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
docker-compose logs -f &
|
||||||
|
fi
|
||||||
|
|
||||||
sleep 60
|
sleep 60
|
||||||
|
|
||||||
services=("pg-default" "pg-new" "pg-recreate")
|
services=("pg-default" "pg-new" "pg-recreate")
|
||||||
|
@ -15,10 +19,12 @@ services=("pg-default" "pg-new" "pg-recreate")
|
||||||
for service in "${services[@]}"; do
|
for service in "${services[@]}"; do
|
||||||
|
|
||||||
# Execute tests
|
# Execute tests
|
||||||
until docker-compose exec $service pg_isready; do
|
until docker-compose exec -T $service pg_isready; do
|
||||||
sleep 1
|
sleep 5
|
||||||
|
echo "Wait service to be ready"
|
||||||
done;
|
done;
|
||||||
docker-compose exec $service /bin/bash /tests/test.sh
|
echo "Execute test for $service"
|
||||||
|
docker-compose exec -T $service /bin/bash /tests/test.sh
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,10 @@ source ../test-env.sh
|
||||||
# Run service
|
# Run service
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
|
|
||||||
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
docker-compose logs -f &
|
||||||
|
fi
|
||||||
|
|
||||||
sleep 30
|
sleep 30
|
||||||
|
|
||||||
services=("pg" "pg-two-extensions")
|
services=("pg" "pg-two-extensions")
|
||||||
|
@ -15,10 +19,12 @@ services=("pg" "pg-two-extensions")
|
||||||
for service in "${services[@]}"; do
|
for service in "${services[@]}"; do
|
||||||
|
|
||||||
# Execute tests
|
# Execute tests
|
||||||
until docker-compose exec $service pg_isready; do
|
until docker-compose exec -T $service pg_isready; do
|
||||||
sleep 30
|
sleep 30
|
||||||
|
echo "Wait service to be ready"
|
||||||
done;
|
done;
|
||||||
docker-compose exec $service /bin/bash /tests/test.sh
|
echo "Execute test for $service"
|
||||||
|
docker-compose exec -T $service /bin/bash /tests/test.sh
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,7 @@ services:
|
||||||
REPLICATION_PASS: 'replicator'
|
REPLICATION_PASS: 'replicator'
|
||||||
REPLICATION: 'true'
|
REPLICATION: 'true'
|
||||||
depends_on:
|
depends_on:
|
||||||
pg-publisher:
|
- pg-publisher
|
||||||
condition: service_healthy
|
|
||||||
# You can expose the port to observe it in your local machine
|
# You can expose the port to observe it in your local machine
|
||||||
# For this sample, it was disabled by default to allow scaling test
|
# For this sample, it was disabled by default to allow scaling test
|
||||||
ports:
|
ports:
|
||||||
|
|
|
@ -8,22 +8,26 @@ source ../test-env.sh
|
||||||
# Run service
|
# Run service
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
|
|
||||||
sleep 5
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
docker-compose logs -f &
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 60
|
||||||
|
|
||||||
# Preparing publisher cluster
|
# Preparing publisher cluster
|
||||||
until docker-compose exec pg-publisher pg_isready; do
|
until docker-compose exec -T pg-publisher pg_isready; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done;
|
done;
|
||||||
|
|
||||||
# Execute tests
|
# Execute tests
|
||||||
docker-compose exec pg-publisher /bin/bash /tests/test_publisher.sh
|
docker-compose exec -T pg-publisher /bin/bash /tests/test_publisher.sh
|
||||||
|
|
||||||
# Preparing node cluster
|
# Preparing node cluster
|
||||||
until docker-compose exec pg-subscriber pg_isready; do
|
until docker-compose exec -T pg-subscriber pg_isready; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done;
|
done;
|
||||||
|
|
||||||
# Execute tests
|
# Execute tests
|
||||||
docker-compose exec pg-subscriber /bin/bash /tests/test_subscriber.sh
|
docker-compose exec -T pg-subscriber /bin/bash /tests/test_subscriber.sh
|
||||||
|
|
||||||
docker-compose down -v
|
docker-compose down -v
|
||||||
|
|
|
@ -72,7 +72,7 @@ class TestReplicationSubscriber(unittest.TestCase):
|
||||||
try:
|
try:
|
||||||
output = func_action()
|
output = func_action()
|
||||||
func_assert(output)
|
func_assert(output)
|
||||||
print('Assertion succes')
|
print('Assertion success')
|
||||||
return
|
return
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
last_error = e
|
last_error = e
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# exit immediately if test fails
|
|
||||||
set -e
|
|
||||||
|
|
||||||
source ../test-env.sh
|
|
||||||
|
|
||||||
# Run service
|
|
||||||
docker-compose up -d
|
|
||||||
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
# Preparing master cluster
|
|
||||||
until docker-compose exec pg-master pg_isready; do
|
|
||||||
sleep 1
|
|
||||||
done;
|
|
||||||
|
|
||||||
# Execute tests
|
|
||||||
docker-compose exec pg-master /bin/bash /tests/test_master.sh
|
|
||||||
|
|
||||||
# Preparing node cluster
|
|
||||||
until docker-compose exec pg-node pg_isready; do
|
|
||||||
sleep 1
|
|
||||||
done;
|
|
||||||
|
|
||||||
# Execute tests
|
|
||||||
docker-compose exec pg-node /bin/bash /tests/test_node.sh
|
|
||||||
|
|
||||||
docker-compose down -v
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# exit immediately if test fails
|
||||||
|
set -e
|
||||||
|
|
||||||
|
source ../test-env.sh
|
||||||
|
|
||||||
|
# Run service
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||||
|
docker-compose logs -f &
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
# Preparing master cluster
|
||||||
|
until docker-compose exec -T pg-master pg_isready; do
|
||||||
|
sleep 30
|
||||||
|
done;
|
||||||
|
|
||||||
|
# Execute tests
|
||||||
|
docker-compose exec -T pg-master /bin/bash /tests/test_master.sh
|
||||||
|
|
||||||
|
# Preparing node cluster
|
||||||
|
until docker-compose exec -T pg-node pg_isready; do
|
||||||
|
sleep 30
|
||||||
|
done;
|
||||||
|
|
||||||
|
# Execute tests
|
||||||
|
docker-compose exec -T pg-node /bin/bash /tests/test_node.sh
|
||||||
|
|
||||||
|
docker-compose down -v
|
|
@ -1,5 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
POSTGRES_MAJOR_VERSION=$(cat /tmp/pg_version.txt)
|
POSTGRES_MAJOR_VERSION=$(cat /tmp/pg_version.txt)
|
||||||
|
POSTGIS_MAJOR=$(cat /tmp/pg_major_version.txt)
|
||||||
|
POSTGIS_MINOR_RELEASE=$(cat /tmp/pg_minor_version.txt)
|
||||||
DEFAULT_DATADIR="/var/lib/postgresql/${POSTGRES_MAJOR_VERSION}/main"
|
DEFAULT_DATADIR="/var/lib/postgresql/${POSTGRES_MAJOR_VERSION}/main"
|
||||||
ROOT_CONF="/etc/postgresql/${POSTGRES_MAJOR_VERSION}/main"
|
ROOT_CONF="/etc/postgresql/${POSTGRES_MAJOR_VERSION}/main"
|
||||||
PG_ENV="$ROOT_CONF/environment"
|
PG_ENV="$ROOT_CONF/environment"
|
||||||
|
@ -8,7 +10,7 @@ WAL_ARCHIVE="/opt/archivedir"
|
||||||
RECOVERY_CONF="$ROOT_CONF/recovery.conf"
|
RECOVERY_CONF="$ROOT_CONF/recovery.conf"
|
||||||
POSTGRES="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/postgres"
|
POSTGRES="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/postgres"
|
||||||
INITDB="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/initdb"
|
INITDB="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/initdb"
|
||||||
SQLDIR="/usr/share/postgresql/${POSTGRES_MAJOR_VERSION}/contrib/postgis-3.0/"
|
SQLDIR="/usr/share/postgresql/${POSTGRES_MAJOR_VERSION}/contrib/postgis-${POSTGIS_MAJOR}.${POSTGIS_MINOR_RELEASE}/"
|
||||||
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/bin/pg_basebackup"
|
||||||
|
@ -337,3 +339,26 @@ function entry_point_script {
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function configure_replication_permissions {
|
||||||
|
|
||||||
|
echo "Setup data permissions"
|
||||||
|
echo "----------------------"
|
||||||
|
chown -R postgres:postgres $(getent passwd postgres | cut -d: -f6)
|
||||||
|
su - postgres -c "echo \"${REPLICATE_FROM}:${REPLICATE_PORT}:*:${REPLICATION_USER}:${REPLICATION_PASS}\" > ~/.pgpass"
|
||||||
|
su - postgres -c "chmod 0600 ~/.pgpass"
|
||||||
|
}
|
||||||
|
|
||||||
|
function streaming_replication {
|
||||||
|
until su - postgres -c "${PG_BASEBACKUP} -X stream -h ${REPLICATE_FROM} -p ${REPLICATE_PORT} -D ${DATADIR} -U ${REPLICATION_USER} -R -vP -w --label=gis_pg_custer"
|
||||||
|
do
|
||||||
|
echo "Waiting for master to connect..."
|
||||||
|
sleep 1s
|
||||||
|
if [[ "$(ls -A ${DATADIR})" ]]; then
|
||||||
|
echo "Need empty folder. Cleaning directory..."
|
||||||
|
rm -rf ${DATADIR}/*
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,21 +7,20 @@ if [ -f "${SETUP_LOCKFILE}" ]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
list=(`echo ${POSTGRES_DBNAME} | tr ',' ' '`)
|
|
||||||
arr=(${list})
|
|
||||||
SINGLE_DB=${arr[0]}
|
|
||||||
# This script will setup necessary configuration to enable replications
|
|
||||||
|
|
||||||
# Refresh configuration in case environment settings changed.
|
# Refresh configuration in case environment settings changed.
|
||||||
cat $CONF.template > $CONF
|
cat $CONF.template > $CONF
|
||||||
|
|
||||||
# Reflect DATADIR loaction
|
# Reflect DATA DIR location
|
||||||
# Delete any data_dir declarations
|
# Delete any data_dir declarations
|
||||||
sed -i '/data_directory/d' $CONF
|
sed -i '/data_directory/d' $CONF
|
||||||
echo "data_directory = '${DATADIR}'" >> $CONF
|
|
||||||
|
|
||||||
# This script will setup necessary configuration to optimise for PostGIS and to enable replications
|
# Create a config to optimise postgis
|
||||||
cat >> $CONF <<EOF
|
if [[ -f ${ROOT_CONF}/postgis.conf ]];then
|
||||||
|
rm $CONF/postgis.conf
|
||||||
|
fi
|
||||||
|
cat >> ${ROOT_CONF}/postgis.conf <<EOF
|
||||||
|
data_directory = '${DATADIR}'
|
||||||
|
port = 5432
|
||||||
superuser_reserved_connections= 10
|
superuser_reserved_connections= 10
|
||||||
listen_addresses = '${IP_LIST}'
|
listen_addresses = '${IP_LIST}'
|
||||||
shared_buffers = ${SHARED_BUFFERS}
|
shared_buffers = ${SHARED_BUFFERS}
|
||||||
|
@ -39,12 +38,14 @@ timezone='${TIMEZONE}'
|
||||||
cron.use_background_workers = on
|
cron.use_background_workers = on
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# This script will setup necessary replication settings
|
echo "include 'postgis.conf'" >> $CONF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Create a config for logical replication
|
||||||
if [[ "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] && "$WAL_LEVEL" == 'logical' ]]; then
|
if [[ "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] && "$WAL_LEVEL" == 'logical' ]]; then
|
||||||
cat >> "$CONF" <<EOF
|
if [[ -f ${ROOT_CONF}/logical_replication.conf ]];then
|
||||||
|
rm $CONF/logical_replication.conf
|
||||||
|
fi
|
||||||
|
cat >> ${ROOT_CONF}/logical_replication.conf <<EOF
|
||||||
wal_level = ${WAL_LEVEL}
|
wal_level = ${WAL_LEVEL}
|
||||||
max_wal_senders = ${PG_MAX_WAL_SENDERS}
|
max_wal_senders = ${PG_MAX_WAL_SENDERS}
|
||||||
wal_keep_size = ${PG_WAL_KEEP_SIZE}
|
wal_keep_size = ${PG_WAL_KEEP_SIZE}
|
||||||
|
@ -53,10 +54,15 @@ max_wal_size = ${WAL_SIZE}
|
||||||
max_logical_replication_workers = ${MAX_LOGICAL_REPLICATION_WORKERS}
|
max_logical_replication_workers = ${MAX_LOGICAL_REPLICATION_WORKERS}
|
||||||
max_sync_workers_per_subscription = ${MAX_SYNC_WORKERS_PER_SUBSCRIPTION}
|
max_sync_workers_per_subscription = ${MAX_SYNC_WORKERS_PER_SUBSCRIPTION}
|
||||||
EOF
|
EOF
|
||||||
|
echo "include 'logical_replication.conf'" >> $CONF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Create a config for streaming replication
|
||||||
if [[ "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] && "$WAL_LEVEL" == 'replica' ]]; then
|
if [[ "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] && "$WAL_LEVEL" == 'replica' ]]; then
|
||||||
cat >> "$CONF" <<EOF
|
if [[ -f ${ROOT_CONF}/streaming_replication.conf ]];then
|
||||||
|
rm $CONF/streaming_replication.conf
|
||||||
|
fi
|
||||||
|
cat >> ${ROOT_CONF}/streaming_replication.conf <<EOF
|
||||||
wal_level = ${WAL_LEVEL}
|
wal_level = ${WAL_LEVEL}
|
||||||
archive_mode = ${ARCHIVE_MODE}
|
archive_mode = ${ARCHIVE_MODE}
|
||||||
archive_command = '${ARCHIVE_COMMAND}'
|
archive_command = '${ARCHIVE_COMMAND}'
|
||||||
|
@ -73,9 +79,17 @@ recovery_target_timeline=${TARGET_TIMELINE}
|
||||||
recovery_target_action=${TARGET_ACTION}
|
recovery_target_action=${TARGET_ACTION}
|
||||||
promote_trigger_file = '${PROMOTE_FILE}'
|
promote_trigger_file = '${PROMOTE_FILE}'
|
||||||
EOF
|
EOF
|
||||||
|
echo "include 'streaming_replication.conf'" >> $CONF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e $EXTRA_CONF >> $CONF
|
if [[ -f ${ROOT_CONF}/extra.conf ]];then
|
||||||
|
rm $CONF/extra.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -z $EXTRA_CONF ]]; then
|
||||||
|
echo -e $EXTRA_CONF >> ${ROOT_CONF}/extra.conf
|
||||||
|
echo "include 'extra.conf'" >> $CONF
|
||||||
|
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
|
||||||
|
|
|
@ -7,37 +7,11 @@ source /scripts/env-data.sh
|
||||||
# Adapted from https://github.com/DanielDent/docker-postgres-replication
|
# Adapted from https://github.com/DanielDent/docker-postgres-replication
|
||||||
# To set up replication
|
# To set up replication
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
create_dir ${WAL_ARCHIVE}
|
create_dir ${WAL_ARCHIVE}
|
||||||
chown -R postgres:postgres ${DATADIR} ${WAL_ARCHIVE}
|
chown -R postgres:postgres ${DATADIR} ${WAL_ARCHIVE}
|
||||||
chmod -R 750 ${DATADIR} ${WAL_ARCHIVE}
|
chmod -R 750 ${DATADIR} ${WAL_ARCHIVE}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function configure_replication_permissions {
|
|
||||||
|
|
||||||
echo "Setup data permissions"
|
|
||||||
echo "----------------------"
|
|
||||||
chown -R postgres:postgres $(getent passwd postgres | cut -d: -f6)
|
|
||||||
su - postgres -c "echo \"${REPLICATE_FROM}:${REPLICATE_PORT}:*:${REPLICATION_USER}:${REPLICATION_PASS}\" > ~/.pgpass"
|
|
||||||
su - postgres -c "chmod 0600 ~/.pgpass"
|
|
||||||
}
|
|
||||||
|
|
||||||
function streaming_replication {
|
|
||||||
until su - postgres -c "${PG_BASEBACKUP} -X stream -h ${REPLICATE_FROM} -p ${REPLICATE_PORT} -D ${DATADIR} -U ${REPLICATION_USER} -R -vP -w --label=gis_pg_custer"
|
|
||||||
do
|
|
||||||
echo "Waiting for master to connect..."
|
|
||||||
sleep 1s
|
|
||||||
if [[ "$(ls -A ${DATADIR})" ]]; then
|
|
||||||
echo "Need empty folder. Cleaning directory..."
|
|
||||||
rm -rf ${DATADIR}/*
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if [[ "$WAL_LEVEL" == 'replica' && "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] ]]; then
|
if [[ "$WAL_LEVEL" == 'replica' && "${REPLICATION}" =~ [Tt][Rr][Uu][Ee] ]]; then
|
||||||
# No content yet - but this is a slave database
|
# No content yet - but this is a slave database
|
||||||
if [ -z "${REPLICATE_FROM}" ]; then
|
if [ -z "${REPLICATE_FROM}" ]; then
|
||||||
|
|
|
@ -22,15 +22,19 @@ mkdir -p ${PGSTAT_TMP}
|
||||||
chmod 0777 ${PGSTAT_TMP}
|
chmod 0777 ${PGSTAT_TMP}
|
||||||
|
|
||||||
# moved from setup.sh
|
# moved from setup.sh
|
||||||
echo "ssl = true" >> $CONF
|
if [[ -f ${ROOT_CONF}/ssl.conf ]];then
|
||||||
#echo "ssl_ciphers = 'DEFAULT:!LOW:!EXP:!MD5:@STRENGTH' " >> $CONF
|
rm $CONF/ssl.conf
|
||||||
#echo "ssl_renegotiation_limit = 512MB " >> $CONF
|
|
||||||
echo "ssl_cert_file = '${SSL_CERT_FILE}'" >> $CONF
|
|
||||||
echo "ssl_key_file = '${SSL_KEY_FILE}'" >> $CONF
|
|
||||||
if [ ! -z "${SSL_CA_FILE}" ]; then
|
|
||||||
echo "ssl_ca_file = '${SSL_CA_FILE}' # (change requires restart)" >> $CONF
|
|
||||||
fi
|
fi
|
||||||
#echo "ssl_crl_file = ''" >> $CONF
|
|
||||||
|
|
||||||
|
cat >> ${ROOT_CONF}/ssl.conf <<EOF
|
||||||
|
ssl = true
|
||||||
|
ssl_cert_file = '${SSL_CERT_FILE}'
|
||||||
|
ssl_key_file = '${SSL_KEY_FILE}'
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ ! -z "${SSL_CA_FILE}" ]; then
|
||||||
|
echo "ssl_ca_file = '${SSL_CA_FILE}' # (change requires restart)" >> ${ROOT_CONF}/ssl.conf
|
||||||
|
fi
|
||||||
|
echo "include 'ssl.conf'" >> $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}
|
||||||
|
|
|
@ -14,44 +14,24 @@ source /scripts/env-data.sh
|
||||||
|
|
||||||
# Only create credentials if this is a master database
|
# Only create credentials if this is a master database
|
||||||
# Slave database will just mirror from master users
|
# Slave database will just mirror from master users
|
||||||
|
echo "Setup postgres User:Password"
|
||||||
|
echo "postgresql user: $POSTGRES_USER" > /tmp/PGPASSWORD.txt
|
||||||
|
echo "postgresql password: $POSTGRES_PASS" >> /tmp/PGPASSWORD.txt
|
||||||
|
|
||||||
echo "$POSTGRES_PASS" >> /tmp/PGPASSWORD.txt
|
# Check user already exists
|
||||||
# Check super user already exists
|
echo "Creating superuser $POSTGRES_USER"
|
||||||
RESULT=`su - postgres -c "psql postgres -t -c \"SELECT 1 FROM pg_roles WHERE rolname = '$POSTGRES_USER'\""`
|
RESULT=`su - postgres -c "psql postgres -t -c \"SELECT 1 FROM pg_roles WHERE rolname = '$POSTGRES_USER'\""`
|
||||||
COMMAND="ALTER"
|
COMMAND="ALTER"
|
||||||
if [ -z "$RESULT" ]; then
|
if [ -z "$RESULT" ]; then
|
||||||
COMMAND="CREATE"
|
COMMAND="CREATE"
|
||||||
fi
|
fi
|
||||||
|
su - postgres -c "psql postgres -c \"$COMMAND USER $POSTGRES_USER WITH SUPERUSER ENCRYPTED PASSWORD '$POSTGRES_PASS';\""
|
||||||
|
|
||||||
echo "Creating superuser user $POSTGRES_USER using $PASSWORD_AUTHENTICATION authentication "
|
echo "Creating replication user $REPLICATION_USER"
|
||||||
if [ PASSWORD_AUTHENTICATION="md5" ]; then
|
|
||||||
PG_PASS=$(U=$POSTGRES_USER; P=$(cat /tmp/PGPASSWORD.txt); echo -n md5; echo -n $P$U | md5sum | cut -d' ' -f1)
|
|
||||||
su - postgres -c "psql postgres -c \"$COMMAND USER $POSTGRES_USER WITH SUPERUSER PASSWORD '$PG_PASS';\""
|
|
||||||
elif [ PASSWORD_AUTHENTICATION="scram-sha-256" ]; then
|
|
||||||
PG_PASS=$(U=$POSTGRES_USER; P=$(cat /tmp/PGPASSWORD.txt); echo -n sha256; echo -n $P$U | sha256sum | cut -d' ' -f1)
|
|
||||||
su - postgres -c "psql postgres -c \"$COMMAND USER $POSTGRES_USER WITH SUPERUSER PASSWORD '$PG_PASS';\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$REPLICATION_PASS" >> /tmp/REPLICATION_PASS.txt
|
|
||||||
|
|
||||||
# Check replication user already exists
|
|
||||||
RESULT_REPLICATION=`su - postgres -c "psql postgres -t -c \"SELECT 1 FROM pg_roles WHERE rolname = '$REPLICATION_USER'\""`
|
RESULT_REPLICATION=`su - postgres -c "psql postgres -t -c \"SELECT 1 FROM pg_roles WHERE rolname = '$REPLICATION_USER'\""`
|
||||||
COMMANDS="ALTER"
|
COMMANDS="ALTER"
|
||||||
if [ -z "$RESULT_REPLICATION" ]; then
|
if [ -z "$RESULT_REPLICATION" ]; then
|
||||||
COMMANDS="CREATE"
|
COMMANDS="CREATE"
|
||||||
fi
|
fi
|
||||||
|
su - postgres -c "psql postgres -c \"$COMMANDS USER $REPLICATION_USER WITH REPLICATION ENCRYPTED PASSWORD '$REPLICATION_PASS';\""
|
||||||
|
|
||||||
if [ -z "$RESULT" ]; then
|
|
||||||
COMMAND="CREATE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Creating replication user $REPLICATION_USER using $PASSWORD_AUTHENTICATION authentication "
|
|
||||||
if [ PASSWORD_AUTHENTICATION="md5" ]; then
|
|
||||||
REP_PASS=$(U=$REPLICATION_USER; P=$(cat /tmp/REPLICATION_PASS.txt); echo -n md5; echo -n $P$U | md5sum | cut -d' ' -f1)
|
|
||||||
su - postgres -c "psql postgres -c \"$COMMANDS USER $REPLICATION_USER WITH REPLICATION PASSWORD '$REP_PASS';\""
|
|
||||||
elif [ PASSWORD_AUTHENTICATION="scram-sha-256" ]; then
|
|
||||||
REP_PASS=$(U=$REPLICATION_USER; P=$(cat /tmp/REPLICATION_PASS.txt); echo -n sha256; echo -n $P$U | sha256sum | cut -d' ' -f1)
|
|
||||||
su - postgres -c "psql postgres -c \"$COMMANDS USER $REPLICATION_USER WITH REPLICATION PASSWORD '$REP_PASS';\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm /tmp/PGPASSWORD.txt /tmp/REPLICATION_PASS.txt
|
|
|
@ -7,13 +7,9 @@ source /scripts/env-data.sh
|
||||||
|
|
||||||
|
|
||||||
# Restrict subnet to docker private network
|
# Restrict subnet to docker private network
|
||||||
echo "host all all 172.0.0.0/8 md5" >> $ROOT_CONF/pg_hba.conf
|
echo "host all all 172.0.0.0/8 ${PASSWORD_AUTHENTICATION}" >> $ROOT_CONF/pg_hba.conf
|
||||||
# And allow access from DockerToolbox / Boot to docker on OSX
|
# And allow access from DockerToolbox / Boot to docker on OSX
|
||||||
echo "host all all 192.168.0.0/16 md5" >> $ROOT_CONF/pg_hba.conf
|
echo "host all all 192.168.0.0/16 ${PASSWORD_AUTHENTICATION}" >> $ROOT_CONF/pg_hba.conf
|
||||||
# Listen on all ip addresses
|
|
||||||
echo "listen_addresses = '*'" >> $CONF
|
|
||||||
echo "port = 5432" >> $CONF
|
|
||||||
|
|
||||||
|
|
||||||
# Create backup template for conf
|
# Create backup template for conf
|
||||||
cat $CONF > $CONF.template
|
cat $CONF > $CONF.template
|
||||||
|
|
Ładowanie…
Reference in New Issue