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
|
||||
.python-version
|
||||
venv
|
||||
.venv
|
||||
__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
|
107
Dockerfile
107
Dockerfile
|
@ -1,19 +1,85 @@
|
|||
#--------- Generic stuff all our Dockerfiles should start with so we get caching ------------
|
||||
##############################################################################
|
||||
# Base stage #
|
||||
##############################################################################
|
||||
ARG DISTRO=debian
|
||||
ARG IMAGE_VERSION=buster
|
||||
ARG IMAGE_VERSION=bullseye
|
||||
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>
|
||||
|
||||
# Reset ARG for version
|
||||
ARG IMAGE_VERSION
|
||||
ARG POSTGRES_MAJOR_VERSION=13
|
||||
ARG POSTGIS_MAJOR=3
|
||||
ARG POSTGIS_MAJOR_VERSION=3
|
||||
ARG POSTGIS_MINOR_RELEASE=1
|
||||
|
||||
|
||||
|
||||
RUN set -eux \
|
||||
&& 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" \
|
||||
&& wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc -O- | apt-key add - \
|
||||
&& apt-get -y --purge autoremove \
|
||||
|
@ -32,15 +98,18 @@ RUN set -eux \
|
|||
&& apt-get update \
|
||||
&& apt-get -y --no-install-recommends install postgresql-client-${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 \
|
||||
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-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
|
||||
|
||||
RUN wget -O- https://github.com/pgpointcloud/pointcloud/archive/master.tar.gz | tar xz && \
|
||||
|
@ -68,4 +137,22 @@ RUN set -eux \
|
|||
|
||||
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
|
29
README.md
29
README.md
|
@ -59,8 +59,7 @@ docker pull kartoza/postgis:image_version
|
|||
|
||||
## Building the image
|
||||
|
||||
To build the image yourself without apt-cacher (also consumes more bandwidth
|
||||
since deb packages need to be fetched each time you build) do:
|
||||
To build the image yourself do:
|
||||
|
||||
```
|
||||
docker build -t kartoza/postgis git://github.com/kartoza/docker-postgis
|
||||
|
@ -79,7 +78,7 @@ Then do:
|
|||
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 .
|
||||
|
@ -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).
|
||||
|
||||
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 .
|
||||
|
@ -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 also run the container using the environment variables.
|
||||
### Environment variables
|
||||
|
||||
#### 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
|
||||
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:
|
||||
|
||||
* `-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
|
||||
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.
|
||||
If the container uses existing cluster, it will be ignored (for example, when the container restarts).
|
||||
These are some initialization parameters that will only get used to initialize a new cluster.
|
||||
If the container uses an existing cluster, it is ignored (for example, when the container restarts).
|
||||
|
||||
* `DEFAULT_ENCODING`: cluster encoding
|
||||
* `DEFAULT_COLLATION`: cluster collation
|
||||
|
@ -150,7 +149,7 @@ new db cluster.
|
|||
|
||||
* `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,
|
||||
it will always recreate new db cluster after every container restarts.
|
||||
|
||||
|
@ -170,7 +169,7 @@ or
|
|||
|
||||
If you use default `DATADIR` location.
|
||||
|
||||
If you need to setup a database cluster with other encoding parameters you need
|
||||
If you need to set up a database cluster with other encoding parameters you need
|
||||
to pass the environment variables when you initialize the cluster.
|
||||
|
||||
* -e DEFAULT_ENCODING="UTF8"
|
||||
|
@ -186,7 +185,7 @@ delete the current cluster and create a new one. Make sure to remove parameter
|
|||
#### Basic configuration
|
||||
|
||||
You can use the following environment variables to pass a
|
||||
user name, password and/or default database name(or multiple databases comma separated).
|
||||
username, password and/or default database name(or multiple databases comma separated).
|
||||
|
||||
* `-e POSTGRES_USER=<PGUSER>`
|
||||
* `-e POSTGRES_PASS=<PGPASSWORD>`
|
||||
|
@ -236,12 +235,12 @@ Maximum size to let the WAL grow to between automatic WAL checkpoints.
|
|||
* `-e MAINTAINANCE_WORK_MEM=128MB`
|
||||
|
||||
#### 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.
|
||||
|
||||
* `-e ALLOW_IP_RANGE=<0.0.0.0/0> By default`
|
||||
|
||||
Postgres conf is setup to listen to all connections and if a user needs to restrict which IP address
|
||||
Postgres conf is set up to listen to all connections and if a user needs to restrict which IP address
|
||||
PostgreSQL listens to you can define it with the following environment variable. The default is set to listen to
|
||||
all connections.
|
||||
* `-e IP_LIST=<*>`
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
[![Build Status](https://travis-ci.org/kartoza/docker-postgis.svg?branch=develop)](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
|
||||
# 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
|
||||
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:
|
||||
|
||||
db:
|
||||
image: kartoza/postgis:12.0
|
||||
image: kartoza/postgis:13.1
|
||||
volumes:
|
||||
- postgis-data:/var/lib/postgresql
|
||||
- dbbackups:/backups
|
||||
|
@ -26,7 +26,7 @@ services:
|
|||
test: "exit 0"
|
||||
|
||||
dbbackups:
|
||||
image: kartoza/pg-backup:12.0
|
||||
image: kartoza/pg-backup:13.0
|
||||
hostname: pg-backups
|
||||
volumes:
|
||||
- dbbackups:/backups
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
docker-compose==1.28
|
|
@ -8,6 +8,10 @@ source ../test-env.sh
|
|||
# Run service
|
||||
docker-compose up -d
|
||||
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
docker-compose logs -f &
|
||||
fi
|
||||
|
||||
sleep 30
|
||||
|
||||
services=("pg" "pg-new")
|
||||
|
@ -15,10 +19,12 @@ services=("pg" "pg-new")
|
|||
for service in "${services[@]}"; do
|
||||
|
||||
# Execute tests
|
||||
until docker-compose exec $service pg_isready; do
|
||||
until docker-compose exec -T $service pg_isready; do
|
||||
sleep 30
|
||||
echo "Wait service to be ready"
|
||||
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
|
||||
|
||||
|
|
|
@ -8,6 +8,10 @@ source ../test-env.sh
|
|||
# Run service
|
||||
docker-compose up -d
|
||||
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
docker-compose logs -f &
|
||||
fi
|
||||
|
||||
sleep 60
|
||||
|
||||
services=("pg-default" "pg-new" "pg-recreate")
|
||||
|
@ -15,10 +19,12 @@ services=("pg-default" "pg-new" "pg-recreate")
|
|||
for service in "${services[@]}"; do
|
||||
|
||||
# Execute tests
|
||||
until docker-compose exec $service pg_isready; do
|
||||
sleep 1
|
||||
until docker-compose exec -T $service pg_isready; do
|
||||
sleep 5
|
||||
echo "Wait service to be ready"
|
||||
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
|
||||
|
||||
|
|
|
@ -8,6 +8,10 @@ source ../test-env.sh
|
|||
# Run service
|
||||
docker-compose up -d
|
||||
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
docker-compose logs -f &
|
||||
fi
|
||||
|
||||
sleep 30
|
||||
|
||||
services=("pg" "pg-two-extensions")
|
||||
|
@ -15,10 +19,12 @@ services=("pg" "pg-two-extensions")
|
|||
for service in "${services[@]}"; do
|
||||
|
||||
# Execute tests
|
||||
until docker-compose exec $service pg_isready; do
|
||||
until docker-compose exec -T $service pg_isready; do
|
||||
sleep 30
|
||||
echo "Wait service to be ready"
|
||||
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
|
||||
|
||||
|
|
|
@ -47,8 +47,7 @@ services:
|
|||
REPLICATION_PASS: 'replicator'
|
||||
REPLICATION: 'true'
|
||||
depends_on:
|
||||
pg-publisher:
|
||||
condition: service_healthy
|
||||
- pg-publisher
|
||||
# You can expose the port to observe it in your local machine
|
||||
# For this sample, it was disabled by default to allow scaling test
|
||||
ports:
|
||||
|
|
|
@ -8,22 +8,26 @@ source ../test-env.sh
|
|||
# Run service
|
||||
docker-compose up -d
|
||||
|
||||
sleep 5
|
||||
if [[ -n "${PRINT_TEST_LOGS}" ]]; then
|
||||
docker-compose logs -f &
|
||||
fi
|
||||
|
||||
sleep 60
|
||||
|
||||
# Preparing publisher cluster
|
||||
until docker-compose exec pg-publisher pg_isready; do
|
||||
until docker-compose exec -T pg-publisher pg_isready; do
|
||||
sleep 1
|
||||
done;
|
||||
|
||||
# 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
|
||||
until docker-compose exec pg-subscriber pg_isready; do
|
||||
until docker-compose exec -T pg-subscriber pg_isready; do
|
||||
sleep 1
|
||||
done;
|
||||
|
||||
# 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
|
||||
|
|
|
@ -72,7 +72,7 @@ class TestReplicationSubscriber(unittest.TestCase):
|
|||
try:
|
||||
output = func_action()
|
||||
func_assert(output)
|
||||
print('Assertion succes')
|
||||
print('Assertion success')
|
||||
return
|
||||
except Exception as 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
|
||||
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"
|
||||
ROOT_CONF="/etc/postgresql/${POSTGRES_MAJOR_VERSION}/main"
|
||||
PG_ENV="$ROOT_CONF/environment"
|
||||
|
@ -8,7 +10,7 @@ WAL_ARCHIVE="/opt/archivedir"
|
|||
RECOVERY_CONF="$ROOT_CONF/recovery.conf"
|
||||
POSTGRES="/usr/lib/postgresql/${POSTGRES_MAJOR_VERSION}/bin/postgres"
|
||||
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"
|
||||
LOCALONLY="-c listen_addresses='127.0.0.1'"
|
||||
PG_BASEBACKUP="/usr/bin/pg_basebackup"
|
||||
|
@ -337,3 +339,26 @@ function entry_point_script {
|
|||
|
||||
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
|
||||
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.
|
||||
cat $CONF.template > $CONF
|
||||
|
||||
# Reflect DATADIR loaction
|
||||
# Reflect DATA DIR location
|
||||
# Delete any data_dir declarations
|
||||
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
|
||||
cat >> $CONF <<EOF
|
||||
# Create a config to optimise postgis
|
||||
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
|
||||
listen_addresses = '${IP_LIST}'
|
||||
shared_buffers = ${SHARED_BUFFERS}
|
||||
|
@ -39,12 +38,14 @@ timezone='${TIMEZONE}'
|
|||
cron.use_background_workers = on
|
||||
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
|
||||
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}
|
||||
max_wal_senders = ${PG_MAX_WAL_SENDERS}
|
||||
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_sync_workers_per_subscription = ${MAX_SYNC_WORKERS_PER_SUBSCRIPTION}
|
||||
EOF
|
||||
echo "include 'logical_replication.conf'" >> $CONF
|
||||
fi
|
||||
|
||||
# Create a config for streaming replication
|
||||
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}
|
||||
archive_mode = ${ARCHIVE_MODE}
|
||||
archive_command = '${ARCHIVE_COMMAND}'
|
||||
|
@ -73,9 +79,17 @@ recovery_target_timeline=${TARGET_TIMELINE}
|
|||
recovery_target_action=${TARGET_ACTION}
|
||||
promote_trigger_file = '${PROMOTE_FILE}'
|
||||
EOF
|
||||
echo "include 'streaming_replication.conf'" >> $CONF
|
||||
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
|
||||
# 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
|
||||
# To set up replication
|
||||
|
||||
|
||||
|
||||
create_dir ${WAL_ARCHIVE}
|
||||
chown -R postgres:postgres ${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
|
||||
# No content yet - but this is a slave database
|
||||
if [ -z "${REPLICATE_FROM}" ]; then
|
||||
|
|
|
@ -22,15 +22,19 @@ mkdir -p ${PGSTAT_TMP}
|
|||
chmod 0777 ${PGSTAT_TMP}
|
||||
|
||||
# moved from setup.sh
|
||||
echo "ssl = true" >> $CONF
|
||||
#echo "ssl_ciphers = 'DEFAULT:!LOW:!EXP:!MD5:@STRENGTH' " >> $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
|
||||
if [[ -f ${ROOT_CONF}/ssl.conf ]];then
|
||||
rm $CONF/ssl.conf
|
||||
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
|
||||
touch ${SETUP_LOCKFILE}
|
||||
|
|
|
@ -14,44 +14,24 @@ source /scripts/env-data.sh
|
|||
|
||||
# Only create credentials if this is a master database
|
||||
# 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 super user already exists
|
||||
# Check 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'\""`
|
||||
COMMAND="ALTER"
|
||||
if [ -z "$RESULT" ]; then
|
||||
COMMAND="CREATE"
|
||||
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 "
|
||||
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
|
||||
echo "Creating replication user $REPLICATION_USER"
|
||||
RESULT_REPLICATION=`su - postgres -c "psql postgres -t -c \"SELECT 1 FROM pg_roles WHERE rolname = '$REPLICATION_USER'\""`
|
||||
COMMANDS="ALTER"
|
||||
if [ -z "$RESULT_REPLICATION" ]; then
|
||||
COMMANDS="CREATE"
|
||||
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
|
||||
echo "host all all 172.0.0.0/8 md5" >> $ROOT_CONF/pg_hba.conf
|
||||
# And allow access from DockerToolbox / Boottodocker on OSX
|
||||
echo "host all all 192.168.0.0/16 md5" >> $ROOT_CONF/pg_hba.conf
|
||||
# Listen on all ip addresses
|
||||
echo "listen_addresses = '*'" >> $CONF
|
||||
echo "port = 5432" >> $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
|
||||
echo "host all all 192.168.0.0/16 ${PASSWORD_AUTHENTICATION}" >> $ROOT_CONF/pg_hba.conf
|
||||
|
||||
# Create backup template for conf
|
||||
cat $CONF > $CONF.template
|
||||
|
|
Ładowanie…
Reference in New Issue