From 1ae18a54f9d58d0963042c4b65fe34b1a8d74b1c Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Fri, 19 May 2017 11:46:10 +0200 Subject: [PATCH] bring in line with github.com/container-images - use baseruntime:latest as base image - reimplement cgroup-limits in shell - take real memory size into account for configuration - don't use nss_wrapper.so - don't reference separate shared-userspace repo - fix usage label - get rid of /var/lib/psql <-> .../data distinction - drop a few unused files from root/ --- Dockerfile | 71 ++++--- README.md | 41 ++++ module-postgresql.repo.in | 8 +- root/help.1 | 190 ------------------ root/usr/bin/cgroup-limits | 171 ++++++++-------- .../container-scripts/postgresql/common.sh | 13 +- .../container-scripts/postgresql/scl_enable | 3 - 7 files changed, 175 insertions(+), 322 deletions(-) create mode 100644 README.md delete mode 100644 root/help.1 delete mode 100644 root/usr/share/container-scripts/postgresql/scl_enable diff --git a/Dockerfile b/Dockerfile index 3722091..98cd566 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,10 +3,9 @@ # This should probably rather be something like...: # FROM registry.fedoraproject.org/module-base-runtime:26 # ...and probably would: -# - contain microdnf rather than dnf # - not have any repositories configured # - need a shared-userspace module repo enabled -FROM registry.fedoraproject.org/fedora:26 +FROM baseruntime/baseruntime:latest # PostgreSQL container image # Exposed ports: @@ -19,13 +18,12 @@ ENV NAME=postgresql \ VERSION=0 \ RELEASE=1 \ ARCH=x86_64 \ + LANG=C.UTF-8 \ + LC_ALL=C.UTF-8 \ POSTGRESQL_VERSION=9.6 \ - LANG=en_US.UTF-8 \ - LC_ALL=en_US.UTF-8 \ HOME=/var/lib/pgsql \ PGUSER=postgres \ - POSTGRESQL_MODULE_HASH=5a0a295c9673c2a1 \ - SHARED_USERSPACE_MODULE_HASH=e67c1e728d6aa7be + POSTGRESQL_MODULE_HASH=d87b0b15567e47f3 LABEL summary = "PostgreSQL is an object-relational DBMS." \ name = "$FGC/$NAME" \ @@ -48,43 +46,44 @@ EXPOSE 5432 ADD root / -# Update packages so everything available is current -RUN dnf update -y --setopt=tsflags=nodocs - -# Need to have charset files, disable normal repo(s), enable module repo(s) -RUN dnf install -y --setopt=tsflags=nodocs 'dnf-command(config-manager)' -RUN dnf install -y glibc-locale-source - -# ORCHESTRATION: -# Newer versions of the shared-userspace module have this, but they're not -# available yet -RUN dnf install -y findutils - -# /usr/bin/envsubst -RUN dnf install -y gettext -# nss_wrapper.so -RUN dnf install -y nss_wrapper - -# No working Python module yet -RUN dnf install -y /usr/bin/python -RUN dnf config-manager --set-disabled fedora -RUN dnf config-manager --set-disabled updates -RUN dnf config-manager --set-disabled rawhide COPY module-postgresql.repo.in /tmp/module-postgresql.repo.in -RUN sed 's|@POSTGRESQL_MODULE_HASH@|'${POSTGRESQL_MODULE_HASH}'|g; s|@SHARED_USERSPACE_MODULE_HASH@|'${SHARED_USERSPACE_MODULE_HASH}'|g' < /tmp/module-postgresql.repo.in > /etc/yum.repos.d/module-postgresql.repo && rm -f /tmp/module-postgresql.repo.in +COPY run_tests.sh /usr/bin/run_tests.sh # Install the postgresql server component. # # 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 INSTALL_PKGS="postgresql postgresql-server" && \ - dnf install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \ + +# Notes about the below: +# - first sed cmd: don't ask +# - rpm -e ... microdnf install systemd: workaround to missing +# microdnf downgrade/distro-sync +# - Update packages so everything available is current +# - Need to have charset files, disable normal repo(s), enable module repo(s) +# ORCHESTRATION: +# - Newer versions of the shared-userspace module are supposed to have +# findutils, not there yet +# - gettext: /usr/bin/envsubst +# - no working python module yet + +RUN \ + sed -i 's|/jkaluza/|/ralph/|g' /etc/yum.repos.d/build.repo && \ + rpm -e --justdb --nodeps systemd-libs && \ + microdnf install -y --setopt=tsflags=nodocs systemd && \ + # microdnf update -y --setopt=tsflags=nodocs && \ + # microdnf install -y glibc-locale-source && \ + microdnf install -y findutils && \ + microdnf install -y gettext && \ + # microdnf install -y nss_wrapper && \ + # microdnf install -y /usr/bin/python && \ + sed 's|@POSTGRESQL_MODULE_HASH@|'${POSTGRESQL_MODULE_HASH}'|g; s|${basearch}|'${ARCH}'|g' < /tmp/module-postgresql.repo.in > /etc/yum.repos.d/module-postgresql.repo && rm -f /tmp/module-postgresql.repo.in && \ + INSTALL_PKGS="postgresql postgresql-server" && \ + microdnf install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \ rpm -V $INSTALL_PKGS && \ - dnf --enablerepo=\* -y clean all && \ - localedef -f UTF-8 -i en_US en_US.UTF-8 && \ - test "$(id -u postgres)" = "26" && \ - test "$(id -g postgres)" = "26" && \ + microdnf -y 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 @@ -92,7 +91,7 @@ RUN INSTALL_PKGS="postgresql postgresql-server" && \ # Get prefix path and path to scripts rather than hard-code them in scripts ENV CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/postgresql -VOLUME ["/var/lib/pgsql/data"] +VOLUME ["/var/lib/pgsql"] USER 26 diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d365a5 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# PostgreSQL + +PostgreSQL is an object-relational Database Management System. + +This is based on the SCL container image for version 9.5 at: + +https://github.com/sclorg/postgresql-container + +## Configuration + +You must either specify the following environment variables: + +* POSTGRESQL_USER +* POSTGRESQL_PASSWORD +* POSTGRESQL_DATABASE + +Or the following environment variable: + +* POSTGRESQL_ADMIN_PASSWORD + +Or both. + +Optional settings: + +* POSTGRESQL_MAX_CONNECTIONS (default: 100) +* POSTGRESQL_MAX_PREPARED_TRANSACTIONS (default: 0) +* POSTGRESQL_SHARED_BUFFERS (default: 32MB) + +## Running in docker + +``` +docker run -v :/var/lib/pgsql:Z -p 5432:5432 -e POSTGRESQL_USER= -e POSTGRESQL_PASSWORD= -e POSTGRESQL_DATABASE= modularitycontainers/postgresql +``` + +Substitute these placeholders with real values: + +* `dbroot_path` - path to the database root on the host which should be mounted + on `/var/lib/pgsql` in the container. Note that the `postgres` user (uid 26) + needs to be able to read and write in that directory. +* `user`, `password`, `database` - details with which a database and user + should be created if the database cluster directory isn't initialized yet. diff --git a/module-postgresql.repo.in b/module-postgresql.repo.in index f93e3dc..96cf8b2 100644 --- a/module-postgresql.repo.in +++ b/module-postgresql.repo.in @@ -1,11 +1,5 @@ -[module-shared-userspace] -name=Repository for the Shared Userspace module -baseurl=https://kojipkgs.fedoraproject.org/repos/module-@SHARED_USERSPACE_MODULE_HASH@/latest/${basearch}/ -enabled=1 -gpgcheck=0 - [module-postgresql] name=Repository for the PostgreSQL module -baseurl=https://kojipkgs.fedoraproject.org/repos/module-@POSTGRESQL_MODULE_HASH@/latest/${basearch}/ +baseurl=https://kojipkgs.fedoraproject.org/repos/module-@POSTGRESQL_MODULE_HASH@-build/latest/${basearch}/ enabled=1 gpgcheck=0 diff --git a/root/help.1 b/root/help.1 deleted file mode 100644 index 89c84d9..0000000 --- a/root/help.1 +++ /dev/null @@ -1,190 +0,0 @@ -.\"t -.\" WARNING: Do not edit this file manually, it is generated from README.md automatically. -.\" -.\"t -.\" Automatically generated by Pandoc 1.16.0.2 -.\" -.TH "POSTGRESQL\-95\-RHEL7" "1" "February 22, 2017" "Container Image Pages" "" -.hy -.SH PostgreSQL Docker image -.PP -This repository contains Dockerfiles for PostgreSQL images for general -usage and OpenShift. -Users can choose between RHEL and CentOS based images. -.SS Environment variables and volumes -.PP -The image recognizes the following environment variables that you can -set during initialization by passing \f[C]\-e\ VAR=VALUE\f[] to the -Docker run command. -.PP -.TS -tab(@); -lw(26.7n) lw(43.3n). -T{ -Variable name -T}@T{ -Description -T} -_ -T{ -\f[C]POSTGRESQL_USER\f[] -T}@T{ -User name for PostgreSQL account to be created -T} -T{ -\f[C]POSTGRESQL_PASSWORD\f[] -T}@T{ -Password for the user account -T} -T{ -\f[C]POSTGRESQL_DATABASE\f[] -T}@T{ -Database name -T} -T{ -\f[C]POSTGRESQL_ADMIN_PASSWORD\f[] -T}@T{ -Password for the \f[C]postgres\f[] admin account (optional) -T} -.TE -.PP -The following environment variables influence the PostgreSQL -configuration file. -They are all optional. -.PP -.TS -tab(@); -lw(15.7n) lw(37.6n) lw(16.7n). -T{ -Variable name -T}@T{ -Description -T}@T{ -Default -T} -_ -T{ -\f[C]POSTGRESQL_MAX_CONNECTIONS\f[] -T}@T{ -The maximum number of client connections allowed -T}@T{ -100 -T} -T{ -\f[C]POSTGRESQL_MAX_PREPARED_TRANSACTIONS\f[] -T}@T{ -Sets the maximum number of transactions that can be in the "prepared" -state. -If you are using prepared transactions, you will probably want this to -be at least as large as max_connections -T}@T{ -0 -T} -T{ -\f[C]POSTGRESQL_SHARED_BUFFERS\f[] -T}@T{ -Sets how much memory is dedicated to PostgreSQL to use for caching data -T}@T{ -32M -T} -T{ -\f[C]POSTGRESQL_EFFECTIVE_CACHE_SIZE\f[] -T}@T{ -Set to an estimate of how much memory is available for disk caching by -the operating system and within the database itself -T}@T{ -128M -T} -.TE -.PP -You can also set the following mount points by passing the -\f[C]\-v\ /host:/container\f[] flag to Docker. -.PP -.TS -tab(@); -l l. -T{ -Volume mount point -T}@T{ -Description -T} -_ -T{ -\f[C]/var/lib/pgsql/data\f[] -T}@T{ -PostgreSQL database cluster directory -T} -.TE -.PP -\f[B]Notice: When mouting a directory from the host into the container, -ensure that the mounted directory has the appropriate permissions and -that the owner and group of the directory matches the user UID or name -which is running inside the container.\f[] -.SS Usage -.PP -For this, we will assume that you are using the -\f[C]openshift/postgresql\-92\-centos7\f[] image. -If you want to set only the mandatory environment variables and not -store the database in a host directory, execute the following command: -.IP -.nf -\f[C] -$\ docker\ run\ \-d\ \-\-name\ postgresql_database\ \-e\ POSTGRESQL_USER=user\ \-e\ POSTGRESQL_PASSWORD=pass\ \-e\ POSTGRESQL_DATABASE=db\ \-p\ 5432:5432\ openshift/postgresql\-92\-centos7 -\f[] -.fi -.PP -This will create a container named \f[C]postgresql_database\f[] running -PostgreSQL with database \f[C]db\f[] and user with credentials -\f[C]user:pass\f[]. -Port 5432 will be exposed and mapped to the host. -If you want your database to be persistent across container executions, -also add a \f[C]\-v\ /host/db/path:/var/lib/pgsql/data\f[] argument. -This will be the PostgreSQL database cluster directory. -.PP -If the database cluster directory is not initialized, the entrypoint -script will first run -\f[C]initdb\f[] (http://www.postgresql.org/docs/9.2/static/app-initdb.html) -and setup necessary database users and passwords. -After the database is initialized, or if it was already present, -\f[C]postgres\f[] (http://www.postgresql.org/docs/9.2/static/app-postgres.html) -is executed and will run as PID 1. -You can stop the detached container by running -\f[C]docker\ stop\ postgresql_database\f[]. -.SS PostgreSQL auto\-tuning -.PP -When the PostgreSQL image is run with the \f[C]\-\-memory\f[] parameter -set and if there are no values provided for -\f[C]POSTGRESQL_SHARED_BUFFERS\f[] and -\f[C]POSTGRESQL_EFFECTIVE_CACHE_SIZE\f[] those values are automatically -calculated based on the value provided in the \f[C]\-\-memory\f[] -parameter. -.PP -The values are calculated based on the -upstream (https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server) -formulas. -For the \f[C]shared_buffers\f[] we use 1/4 of given memory and for the -\f[C]effective_cache_size\f[] we set the value to 1/2 of the given -memory. -.SS PostgreSQL admin account -.PP -The admin account \f[C]postgres\f[] has no password set by default, only -allowing local connections. -You can set it by setting the \f[C]POSTGRESQL_ADMIN_PASSWORD\f[] -environment variable when initializing your container. -This will allow you to login to the \f[C]postgres\f[] account remotely. -Local connections will still not require a password. -.SS Changing passwords -.PP -Since passwords are part of the image configuration, the only supported -method to change passwords for the database user -(\f[C]POSTGRESQL_USER\f[]) and \f[C]postgres\f[] admin user is by -changing the environment variables \f[C]POSTGRESQL_PASSWORD\f[] and -\f[C]POSTGRESQL_ADMIN_PASSWORD\f[], respectively. -.PP -Changing database passwords through SQL statements or any way other than -through the environment variables aforementioned will cause a mismatch -between the values stored in the variables and the actual passwords. -Whenever a database container starts it will reset the passwords to the -values stored in the environment variables. -.SH AUTHORS -Red Hat. diff --git a/root/usr/bin/cgroup-limits b/root/usr/bin/cgroup-limits index b9d4edc..7ad9527 100755 --- a/root/usr/bin/cgroup-limits +++ b/root/usr/bin/cgroup-limits @@ -1,92 +1,99 @@ -#!/usr/bin/python +#!/bin/bash -""" -Script for parsing cgroup information +# 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 a 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 +# RAM_SIZE_IN_BYTES +# Available memory in bytes. The value is taken from /proc/meminfo. +# 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. -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: +get_memory_limit() { + local limit="$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)" + if [ $? -eq 0 ]; then + echo "$limit" + else + echo "Warning: Can't detect memory limit from cgroups" >&2 + fi +} - set -o errexit - export_vars=$(cgroup-limits) ; export $export_vars +get_meminfo_ram_size() { + local limit="$(cat /proc/meminfo | while read key val unit rest; do if [ "$key" = "MemTotal:" ]; then echo "$val $unit"; break; fi; done)" + if [ $? -eq 0 ]; then + local val="${limit/ *}" + local unit="${limit/* }" + case "$unit" in + kB) + val=$(($val * 1024)) + ;; + MB) + val=$(($val * 1024 * 1024)) + ;; + GB) + val=$(($val * 1024 * 1024 * 1024)) + ;; + esac + echo "$val" + else + echo "Warning: Can't detect RAM site from /proc/meminfo." >&2 + fi +} -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. -""" +get_number_of_cores() { + local core_count=0 + local group + local sysfs_cpus="$(cat /sys/fs/cgroup/cpuset/cpuset.cpus)" -from __future__ import print_function -import sys + if [ $? -eq 0 ]; then + for group in ${sysfs_cpus//,/ }; do + local from="${group%-*}" + local to="${group#*-}" + core_count=$(($core_count + $to - $from + 1)) + done + echo "$core_count" + else + echo "Warning: Can't detect number of CPU cores from cgroups" >&2 + fi +} +MAX_MEMORY_LIMIT_IN_BYTES=9223372036854775807 +MEMORY_LIMIT_IN_BYTES="$(get_memory_limit)" +RAM_SIZE_IN_BYTES="$(get_meminfo_ram_size)" +NUMBER_OF_CORES="$(get_number_of_cores)" -def _read_file(path): - try: - with open(path, 'r') as f: - return f.read().strip() - except IOError: - return None +echo "MAX_MEMORY_LIMIT_IN_BYTES=$MAX_MEMORY_LIMIT_IN_BYTES" +if [ -n "$MEMORY_LIMIT_IN_BYTES" ]; then + echo "MEMORY_LIMIT_IN_BYTES=$MEMORY_LIMIT_IN_BYTES" + if [ "$MEMORY_LIMIT_IN_BYTES" -ge "$MAX_MEMORY_LIMIT_IN_BYTES" ]; then + echo "NO_MEMORY_LIMIT=true" + fi +fi -def get_memory_limit(): - """ - Read memory limit, in bytes. - """ +if [ -n "$RAM_SIZE_IN_BYTES" ]; then + echo "RAM_SIZE_IN_BYTES=$RAM_SIZE_IN_BYTES" +fi - 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)) +if [ -n "$NUMBER_OF_CORES" ]; then + echo "NUMBER_OF_CORES=$NUMBER_OF_CORES" +fi diff --git a/root/usr/share/container-scripts/postgresql/common.sh b/root/usr/share/container-scripts/postgresql/common.sh index ca58a0b..60fe4cd 100644 --- a/root/usr/share/container-scripts/postgresql/common.sh +++ b/root/usr/share/container-scripts/postgresql/common.sh @@ -6,14 +6,19 @@ export POSTGRESQL_MAX_PREPARED_TRANSACTIONS=${POSTGRESQL_MAX_PREPARED_TRANSACTIO # limits are set). # Users can still override this by setting the POSTGRESQL_SHARED_BUFFERS # and POSTGRESQL_EFFECTIVE_CACHE_SIZE variables. -if [[ "${NO_MEMORY_LIMIT:-}" == "true" || -z "${MEMORY_LIMIT_IN_BYTES:-}" ]]; then +if [[ "${NO_MEMORY_LIMIT:-}" == "true" || -z "${MEMORY_LIMIT_IN_BYTES:-}" || -z "${RAM_SIZE_IN_BYTES:-}" ]]; then export POSTGRESQL_SHARED_BUFFERS=${POSTGRESQL_SHARED_BUFFERS:-32MB} export POSTGRESQL_EFFECTIVE_CACHE_SIZE=${POSTGRESQL_EFFECTIVE_CACHE_SIZE:-128MB} else + if [ "$MEMORY_LIMIT_IN_BYTES" -gt "$RAM_SIZE_IN_BYTES" ]; then + mem_limit="$RAM_SIZE_IN_BYTES" + else + mem_limit="$MEMORY_LIMIT_IN_BYTES" + fi # Use 1/4 of given memory for shared buffers - shared_buffers_computed="$(($MEMORY_LIMIT_IN_BYTES/1024/1024/4))MB" + shared_buffers_computed="$(($mem_limit/1024/1024/4))MB" # Setting effective_cache_size to 1/2 of total memory would be a normal conservative setting, - effective_cache="$(($MEMORY_LIMIT_IN_BYTES/1024/1024/2))MB" + effective_cache="$(($mem_limit/1024/1024/2))MB" export POSTGRESQL_SHARED_BUFFERS=${POSTGRESQL_SHARED_BUFFERS:-$shared_buffers_computed} export POSTGRESQL_EFFECTIVE_CACHE_SIZE=${POSTGRESQL_EFFECTIVE_CACHE_SIZE:-$effective_cache} fi @@ -126,7 +131,7 @@ function generate_passwd_file() { export GROUP_ID=$(id -g) grep -v ^postgres /etc/passwd > "$HOME/passwd" echo "postgres:x:${USER_ID}:${GROUP_ID}:PostgreSQL Server:${HOME}:/bin/bash" >> "$HOME/passwd" - export LD_PRELOAD=libnss_wrapper.so + #export LD_PRELOAD=libnss_wrapper.so export NSS_WRAPPER_PASSWD=${HOME}/passwd export NSS_WRAPPER_GROUP=/etc/group } diff --git a/root/usr/share/container-scripts/postgresql/scl_enable b/root/usr/share/container-scripts/postgresql/scl_enable deleted file mode 100644 index 1d967f9..0000000 --- a/root/usr/share/container-scripts/postgresql/scl_enable +++ /dev/null @@ -1,3 +0,0 @@ -# This will make scl collection binaries work out of box. -unset BASH_ENV PROMPT_COMMAND ENV -source scl_source enable $ENABLED_COLLECTIONS