diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f4dd656c12fea4cb189743bc28f101ef18b3222a..09564c97696c39380fab1662e1c14c91e680a190 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -106,3 +106,20 @@ push-k8s:
   needs:
     - job: build-k8s
       artifacts: true
+
+# pre-commit image:
+
+build-pre-commit:
+  extends: .container-build
+  variables:
+    CONTEXT: images/pre-commit
+
+push-pre-commit:
+  extends: .container-push
+  variables:
+    CONTEXT: images/pre-commit
+    IMAGE: ci-images
+    TAG: pre-commit
+  needs:
+    - job: build-pre-commit
+      artifacts: true
diff --git a/images/pre-commit/.dockerignore b/images/pre-commit/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..72e8ffc0db8aad71a934dd11e5968bd5109e54b4
--- /dev/null
+++ b/images/pre-commit/.dockerignore
@@ -0,0 +1 @@
+*
diff --git a/images/pre-commit/Dockerfile b/images/pre-commit/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..6794071364d0eff721b3997155dd74169f42aed0
--- /dev/null
+++ b/images/pre-commit/Dockerfile
@@ -0,0 +1,19 @@
+FROM buildpack-deps:bullseye
+# hadolint ignore=DL3008,DL3013
+RUN apt-get update && \
+    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+        docker.io \
+        python3-dev \
+        python3-pip \
+        python3-setuptools \
+        python3-venv \
+    && \
+    python3 -m pip install --no-cache-dir --upgrade pip && \
+    python3 -m pip install --no-cache-dir \
+        docker-compose \
+        pipenv \
+        poetry \
+        pre_commit \
+        tox \
+    && \
+    rm -rf /root/.cache /tmp/* /var/tmp/* /var/lib/apt/lists/* /var/cache/apt/archives/*