PostgreSQL Container Images
Images available on Quay.io are:
- CentOS 7 postgresql-10
- CentOS 7 postgresql-12
- CentOS 7 postgresql-13
- CentOS Stream 8 postgresql-10
- CentOS Stream 8 postgresql-13
- CentOS Stream 8 postgresql-15
- CentOS Stream 9 postgresql-13
- CentOS Stream 9 postgresql-15
- Fedora postgresql-11
- Fedora postgresql-12
- Fedora postgresql-13
- Fedora postgresql-14
- Fedora postgresql-15
This repository provides Dockerfiles for PostgreSQL container images, optimized for use with OpenShift. These images are available in RHEL, Fedora, and CentOS-based variants.
For more information about using these images with OpenShift, please refer to the official OpenShift Documentation.
To contribute to this project, please review the Contribution Guidelines. For learning more information about concepts used in these container images, see the Landing page.
Versions
PostgreSQL versions currently supported are:
RHEL versions currently supported are:
- RHEL7
- RHEL8
- RHEL9
CentOS versions currently supported are:
- CentOS7
- CentOS Stream 8
- CentOS Stream 9
Installation
Choose either the CentOS Stream 9 or RHEL9-based image:
-
RHEL9 based image
These images are available in the Red Hat Container Catalog. To download the image, execute the following command:
podman pull registry.redhat.io/rhel9/postgresql-13
To build a RHEL9-based image, ensure you run Docker build on a RHEL machine with a valid subscription.
$ git clone --recursive https://github.com/sclorg/postgresql-container.git $ cd postgresql $ make build TARGET=rhel9 VERSIONS=13
-
CentOS Stream 9 based image
These images are available on Quay.io. To download the image, execute the following command:
$ podman pull https://quay.io/repository/sclorg/postgresql-13-c9s
To build a PostgreSQL image from scratch, perform the following steps:
$ git clone --recursive https://github.com/sclorg/postgresql-container.git $ cd postgresql $ make build TARGET=c9s VERSIONS=13
Note: While the installation steps utilize podman
, you can substitute these calls with docker
with the same arguments.
Warning: By omitting the VERSIONS
parameter, the build/test action will be executed on all provided versions of PostgreSQL.
Contributing Guidelines
This repository utilizes distgen for generating image source files. If you are interested in updating a Dockerfile, please modify the relevant sections in the specs/multispec.yml
file and/or the Dockerfile.template
(or other distgen files), and then execute make generate
.
Before you begin, ensure that you have distgen
installed by running dg --version
. If distgen
is not installed on your system, follow the installation guide available at distgen's GitHub repository.
Additionally, for testing purposes, install go-md2man
from this repository go-md2man or via dnf install go-md2man
.
To contribute, please follow these steps:
- Fork the repository
- Run
git submodule update --init
to download thecommon
submodule containing thecommon/common.mk
makefile. - Implement a new feature or bug fix in the templates (found in the
src
directory) or update values in thespecs/multispec.yml
file.- Note: If no changes are made to these directories, file regeneration is not necessary.
- Regenerate all files by executing
make generate
. - Consider running CI tests, as described in the Test section below.
- Commit the files and generated files in two separated commits with a conventional commit message for each.
- Open a pull request for review!
Usage
For detailed information on the usage of specific PostgreSQL Dockerfiles, please refer to the corresponding usage documentation:
- PostgreSQL 10 Usage Documentation
- PostgreSQL 12 Usage Documentation
- PostgreSQL 13 Usage Documentation
- PostgreSQL 14 Usage Documentation
- PostgreSQL 15 Usage Documentation
For unsupported versions, you may refer to:
Test
This repository includes a testing framework that verifies the basic functionality of the PostgreSQL image. Users can choose to test the image based on RHEL or CentOS Stream.
-
RHEL-based image
To test a RHEL9-based PostgreSQL image, ensure you are running the test on a properly subscribed RHEL machine.
$ cd postgresql $ make test TARGET=rhel9 VERSIONS=13
-
CentOS Stream-based image
$ cd postgresql $ make test TARGET=c9s VERSIONS=13
-
To run a specific subset of test cases, use the
TESTS
parameter:$ cd postgresql $ make test VERSIONS=13 TESTS="run_general_tests run_replication_test"
Note: By omitting the VERSIONS
parameter, the build/test action will be performed on all provided versions of PostgreSQL.
The test command is utilized from the common
submodule. While it is possible to run make test-openshift-4
, it is typically not necessary. All commands for the Makefile can be found in common/Makefile
. The make test
command will execute all tests required by the CI.
Enabling SSL/TLS for PostgreSQL container
For comprehensive information and instructions on enabling SSL/TLS, please refer to the examples/enable-ssl/README.md
.