forked from sclorg/postgresql-container
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Comply with sclorg/container-common-scripts#4 (2. step)
Copy 'latest' into '9.2'. We sacrifice git history of 9.2 to have better history in latest.
- Loading branch information
Showing
18 changed files
with
576 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
FROM centos:centos7 | ||
|
||
# PostgreSQL image for OpenShift. | ||
# Volumes: | ||
# * /var/lib/psql/data - Database cluster for PostgreSQL | ||
# Environment: | ||
# * $POSTGRESQL_USER - Database user name | ||
# * $POSTGRESQL_PASSWORD - User's password | ||
# * $POSTGRESQL_DATABASE - Name of the database to create | ||
# * $POSTGRESQL_ADMIN_PASSWORD (Optional) - Password for the 'postgres' | ||
# PostgreSQL administrative account | ||
|
||
MAINTAINER SoftwareCollections.org <[email protected]> | ||
|
||
ENV POSTGRESQL_VERSION=9.2 \ | ||
HOME=/var/lib/pgsql \ | ||
PGUSER=postgres | ||
|
||
LABEL io.k8s.description="PostgreSQL is an advanced Object-Relational database management system" \ | ||
io.k8s.display-name="PostgreSQL 9.2" \ | ||
io.openshift.expose-services="5432:postgresql" \ | ||
io.openshift.tags="database,postgresql,postgresql92" | ||
|
||
EXPOSE 5432 | ||
|
||
ADD README.md /help.md | ||
ADD root / | ||
|
||
# This image must forever use UID 26 for postgres user so our volumes are | ||
# safe in the future. This should *never* change, the last test is there | ||
# to make sure of that. | ||
RUN yum install -y centos-release-scl && \ | ||
INSTALL_PKGS="rsync tar gettext bind-utils postgresql92 postgresql92-postgresql-contrib nss_wrapper" && \ | ||
yum -y --setopt=tsflags=nodocs install $INSTALL_PKGS && \ | ||
rpm -V $INSTALL_PKGS && \ | ||
yum clean all && \ | ||
localedef -f UTF-8 -i en_US en_US.UTF-8 && \ | ||
test "$(id postgres)" = "uid=26(postgres) gid=26(postgres) groups=26(postgres)" && \ | ||
mkdir -p /var/lib/pgsql/data && \ | ||
/usr/libexec/fix-permissions /var/lib/pgsql && \ | ||
/usr/libexec/fix-permissions /var/run/postgresql | ||
|
||
# Get prefix path and path to scripts rather than hard-code them in scripts | ||
ENV CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/postgresql \ | ||
ENABLED_COLLECTIONS=postgresql92 | ||
|
||
# When bash is started non-interactively, to run a shell script, for example it | ||
# looks for this variable and source the content of this file. This will enable | ||
# the SCL for all scripts without need to do 'scl enable'. | ||
ENV BASH_ENV=${CONTAINER_SCRIPTS_PATH}/scl_enable \ | ||
ENV=${CONTAINER_SCRIPTS_PATH}/scl_enable \ | ||
PROMPT_COMMAND=". ${CONTAINER_SCRIPTS_PATH}/scl_enable" | ||
|
||
|
||
VOLUME ["/var/lib/pgsql/data"] | ||
|
||
USER 26 | ||
|
||
ENTRYPOINT ["container-entrypoint"] | ||
CMD ["run-postgresql"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
FROM rhel7 | ||
|
||
# PostgreSQL image for OpenShift. | ||
# Volumes: | ||
# * /var/lib/psql/data - Database cluster for PostgreSQL | ||
# Environment: | ||
# * $POSTGRESQL_USER - Database user name | ||
# * $POSTGRESQL_PASSWORD - User's password | ||
# * $POSTGRESQL_DATABASE - Name of the database to create | ||
# * $POSTGRESQL_ADMIN_PASSWORD (Optional) - Password for the 'postgres' | ||
# PostgreSQL administrative account | ||
|
||
ENV POSTGRESQL_VERSION=9.2 \ | ||
HOME=/var/lib/pgsql \ | ||
PGUSER=postgres | ||
|
||
LABEL io.k8s.description="PostgreSQL is an advanced Object-Relational database management system" \ | ||
io.k8s.display-name="PostgreSQL 9.2" \ | ||
io.openshift.expose-services="5432:postgresql" \ | ||
io.openshift.tags="database,postgresql,postgresql92" | ||
|
||
# Labels consumed by Red Hat build service | ||
LABEL name="openshift3/postgresql-92-rhel7" \ | ||
com.redhat.component="openshift-postgresql-docker" \ | ||
version="9.2" \ | ||
release="1" \ | ||
architecture="x86_64" | ||
|
||
EXPOSE 5432 | ||
|
||
ADD README.md /help.md | ||
ADD root / | ||
|
||
# This image must forever use UID 26 for postgres user so our volumes are | ||
# safe in the future. This should *never* change, the last test is there | ||
# to make sure of that. | ||
RUN yum install -y yum-utils && \ | ||
yum-config-manager --enable rhel-server-rhscl-7-rpms && \ | ||
yum-config-manager --enable rhel-7-server-optional-rpms && \ | ||
INSTALL_PKGS="rsync tar gettext bind-utils postgresql92 postgresql92-postgresql-contrib nss_wrapper" && \ | ||
yum install -y --disablerepo="epel" --setopt=tsflags=nodocs $INSTALL_PKGS && \ | ||
rpm -V $INSTALL_PKGS && \ | ||
yum clean all && \ | ||
localedef -f UTF-8 -i en_US en_US.UTF-8 && \ | ||
test "$(id postgres)" = "uid=26(postgres) gid=26(postgres) groups=26(postgres)" && \ | ||
mkdir -p /var/lib/pgsql/data && \ | ||
/usr/libexec/fix-permissions /var/lib/pgsql && \ | ||
/usr/libexec/fix-permissions /var/run/postgresql | ||
|
||
# Get prefix path and path to scripts rather than hard-code them in scripts | ||
ENV CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/postgresql \ | ||
ENABLED_COLLECTIONS=postgresql92 | ||
|
||
# When bash is started non-interactively, to run a shell script, for example it | ||
# looks for this variable and source the content of this file. This will enable | ||
# the SCL for all scripts without need to do 'scl enable'. | ||
ENV BASH_ENV=${CONTAINER_SCRIPTS_PATH}/scl_enable \ | ||
ENV=${CONTAINER_SCRIPTS_PATH}/scl_enable \ | ||
PROMPT_COMMAND=". ${CONTAINER_SCRIPTS_PATH}/scl_enable" | ||
|
||
VOLUME ["/var/lib/pgsql/data"] | ||
|
||
USER 26 | ||
|
||
ENTRYPOINT ["container-entrypoint"] | ||
CMD ["run-postgresql"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
root/usr/share/container-scripts/postgresql/README.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
job-id: postgresql-92-centos7 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
.\"t | ||
.\" WARNING: Do not edit this file manually, it is generated from README.md automatically. | ||
.\" | ||
.\" Automatically generated by Pandoc 1.16.0.2 | ||
.\" | ||
.TH "POSTGRESQL\-92\-RHEL7" "1" "February 22, 2017" "Container Image Pages" "" | ||
.hy | ||
.SH PostgreSQL Docker image | ||
.PP | ||
\f[B]The PostgreSQL 9.2 image is deprecated.\f[] | ||
.SH AUTHORS | ||
Red Hat. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
#!/usr/bin/python | ||
|
||
""" | ||
Script for parsing cgroup information | ||
This script will read some limits from the cgroup system and parse | ||
them, printing out "VARIABLE=VALUE" on each line for every limit that is | ||
successfully read. Output of this script can be directly fed into | ||
bash's export command. Recommended usage from a bash script: | ||
set -o errexit | ||
export_vars=$(cgroup-limits) ; export $export_vars | ||
Variables currently supported: | ||
MAX_MEMORY_LIMIT_IN_BYTES | ||
Maximum possible limit MEMORY_LIMIT_IN_BYTES can have. This is | ||
currently constant value of 9223372036854775807. | ||
MEMORY_LIMIT_IN_BYTES | ||
Maximum amount of user memory in bytes. If this value is set | ||
to the same value as MAX_MEMORY_LIMIT_IN_BYTES, it means that | ||
there is no limit set. The value is taken from | ||
/sys/fs/cgroup/memory/memory.limit_in_bytes | ||
NUMBER_OF_CORES | ||
Number of detected CPU cores that can be used. This value is | ||
calculated from /sys/fs/cgroup/cpuset/cpuset.cpus | ||
NO_MEMORY_LIMIT | ||
Set to "true" if MEMORY_LIMIT_IN_BYTES is so high that the caller | ||
can act as if no memory limit was set. Undefined otherwise. | ||
""" | ||
|
||
from __future__ import print_function | ||
import sys | ||
|
||
|
||
def _read_file(path): | ||
try: | ||
with open(path, 'r') as f: | ||
return f.read().strip() | ||
except IOError: | ||
return None | ||
|
||
|
||
def get_memory_limit(): | ||
""" | ||
Read memory limit, in bytes. | ||
""" | ||
|
||
limit = _read_file('/sys/fs/cgroup/memory/memory.limit_in_bytes') | ||
if limit is None or not limit.isdigit(): | ||
print("Warning: Can't detect memory limit from cgroups", | ||
file=sys.stderr) | ||
return None | ||
return int(limit) | ||
|
||
|
||
def get_number_of_cores(): | ||
""" | ||
Read number of CPU cores. | ||
""" | ||
|
||
core_count = 0 | ||
|
||
line = _read_file('/sys/fs/cgroup/cpuset/cpuset.cpus') | ||
if line is None: | ||
print("Warning: Can't detect number of CPU cores from cgroups", | ||
file=sys.stderr) | ||
return None | ||
|
||
for group in line.split(','): | ||
core_ids = list(map(int, group.split('-'))) | ||
if len(core_ids) == 2: | ||
core_count += core_ids[1] - core_ids[0] + 1 | ||
else: | ||
core_count += 1 | ||
|
||
return core_count | ||
|
||
|
||
if __name__ == "__main__": | ||
env_vars = { | ||
"MAX_MEMORY_LIMIT_IN_BYTES": 9223372036854775807, | ||
"MEMORY_LIMIT_IN_BYTES": get_memory_limit(), | ||
"NUMBER_OF_CORES": get_number_of_cores() | ||
} | ||
|
||
env_vars = {k: v for k, v in env_vars.items() if v is not None} | ||
|
||
if env_vars.get("MEMORY_LIMIT_IN_BYTES", 0) >= 92233720368547: | ||
env_vars["NO_MEMORY_LIMIT"] = "true" | ||
|
||
for key, value in env_vars.items(): | ||
print("{0}={1}".format(key, value)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/bash | ||
|
||
exec "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
#!/bin/bash | ||
|
||
export ENABLE_REPLICATION=${ENABLE_REPLICATION:-false} | ||
|
||
set -eu | ||
export_vars=$(cgroup-limits) ; export $export_vars | ||
|
||
source "${CONTAINER_SCRIPTS_PATH}/common.sh" | ||
|
||
set_pgdata | ||
check_env_vars | ||
generate_passwd_file | ||
generate_postgresql_config | ||
|
||
if [ ! -f "$PGDATA/postgresql.conf" ]; then | ||
initialize_database | ||
NEED_TO_CREATE_USERS=yes | ||
fi | ||
|
||
pg_ctl -w start -o "-h ''" | ||
if [ "${NEED_TO_CREATE_USERS:-}" == "yes" ]; then | ||
create_users | ||
fi | ||
set_passwords | ||
pg_ctl stop | ||
|
||
unset_env_vars | ||
exec postgres "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/bin/bash | ||
|
||
export ENABLE_REPLICATION=true | ||
|
||
exec run-postgresql "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#!/bin/bash | ||
|
||
export ENABLE_REPLICATION=true | ||
|
||
set -eu | ||
export_vars=$(cgroup-limits) ; export $export_vars | ||
|
||
source "$CONTAINER_SCRIPTS_PATH"/common.sh | ||
|
||
set_pgdata | ||
|
||
function initialize_replica() { | ||
echo "Initializing PostgreSQL slave ..." | ||
# TODO: Validate and reuse existing data? | ||
rm -rf $PGDATA | ||
PGPASSWORD="${POSTGRESQL_MASTER_PASSWORD}" pg_basebackup -x --no-password --pgdata ${PGDATA} --host=${MASTER_FQDN} --port=5432 -U "${POSTGRESQL_MASTER_USER}" | ||
|
||
# PostgreSQL recovery configuration. | ||
generate_postgresql_recovery_config | ||
cat >> "$PGDATA/recovery.conf" <<EOF | ||
# Custom OpenShift recovery configuration: | ||
include '${POSTGRESQL_RECOVERY_FILE}' | ||
EOF | ||
} | ||
|
||
check_env_vars | ||
generate_passwd_file | ||
generate_postgresql_config | ||
|
||
wait_for_postgresql_master | ||
export MASTER_FQDN=$(postgresql_master_addr) | ||
initialize_replica | ||
|
||
unset_env_vars | ||
exec postgres "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#!/bin/sh | ||
# Fix permissions on the given directory to allow group read/write of | ||
# regular files and execute of directories. | ||
find "$1" -exec chown postgres {} \; | ||
find "$1" -exec chgrp 0 {} \; | ||
find "$1" -exec chmod g+rw {} \; | ||
find "$1" -type d -exec chmod g+x {} + |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
PostgreSQL Docker image | ||
======================= | ||
|
||
**The PostgreSQL 9.2 image is deprecated.** |
Oops, something went wrong.