diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ba82827426b51a0ea8cd5fbbcb9bc516ddbaf590..d8861e9222d00747fe4be27ae8c6ad342cfac253 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,6 +5,9 @@ variables:
   DOCKER_DRIVER: overlay2
   DOCKER_TLS_CERTDIR: ""
 
+  POSTGRESQL_IMAGE_NAME: "postgres"
+  POSTGRESQL_IMAGE: $CI_REGISTRY_IMAGE/$POSTGRESQL_IMAGE_NAME
+
   ECLIPSE_TEMURIN_IMAGE_NAME: "eclipse-temurin"
   ECLIPSE_TEMURIN_IMAGE: $CI_REGISTRY_IMAGE/$ECLIPSE_TEMURIN_IMAGE_NAME
 
@@ -22,3 +25,19 @@ build_eclipse_temurin:
     - /kaniko/executor --context $CI_PROJECT_DIR/eclipse-temurin/21 --dockerfile $CI_PROJECT_DIR/eclipse-temurin/21/Dockerfile --destination ${ECLIPSE_TEMURIN_IMAGE}:21-jre-alpine
   only:
     - main
+
+build_postgresql:
+  stage: build
+  image:
+    name: gcr.io/kaniko-project/executor:debug
+    entrypoint: [""]
+  tags:
+    - docker
+  script:
+    - export
+    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json
+    - /kaniko/executor --context $CI_PROJECT_DIR/postgresql/14 --dockerfile $CI_PROJECT_DIR/postgresql/14/Dockerfile --destination ${POSTGRESQL_IMAGE}:14
+    - /kaniko/executor --context $CI_PROJECT_DIR/postgresql/15 --dockerfile $CI_PROJECT_DIR/postgresql/15/Dockerfile --destination ${POSTGRESQL_IMAGE}:15
+    - /kaniko/executor --context $CI_PROJECT_DIR/postgresql/16 --dockerfile $CI_PROJECT_DIR/postgresql/16/Dockerfile --destination ${POSTGRESQL_IMAGE}:16
+  only:
+    - main
diff --git a/postgresql/14/Dockerfile b/postgresql/14/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..44a46b46fc3af3032f3ed33a2f761cdcc8bda800
--- /dev/null
+++ b/postgresql/14/Dockerfile
@@ -0,0 +1 @@
+FROM postgres:14
diff --git a/postgresql/15/Dockerfile b/postgresql/15/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..1719e6a2162740cdc82ca7f36da1087a2422ecb4
--- /dev/null
+++ b/postgresql/15/Dockerfile
@@ -0,0 +1 @@
+FROM postgres:15
diff --git a/postgresql/16/Dockerfile b/postgresql/16/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..9a1a0f96ee28ad07dc5c5658710cbdfc6bb423a3
--- /dev/null
+++ b/postgresql/16/Dockerfile
@@ -0,0 +1 @@
+FROM postgres:16