diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f1deaa311966d18373e1fca3f622193ccc4df663..c2474de98c77a90125009d1212cb445c704186db 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,10 @@ include:
   # pre-commit hook. This can also be better if you're working on different
   # branches but want to use the hooks from the master branch.
   # yamllint disable-line rule:line-length
-  - remote: https://git.shore.co.il/shore/ci-templates/-/raw/master/templates/pre-commit.yml
+  - remote: |-
+      https://git.shore.co.il/shore/ci-templates/-/raw/master/templates/pre-commit.yml
+  - remote: |-
+      https://git.shore.co.il/shore/ci-templates/-/raw/master/templates/containerfiles.yml
 
 lint templates:
   image: registry.shore.co.il/ci-images:pre-commit
@@ -29,3 +32,19 @@ lint templates:
   cache:
     paths:
       - .cache/
+
+# bats image:
+
+build-bats:
+  extends: .container-build
+  variables:
+    CONTEXT: images/bats
+
+push-bats:
+  extends: .container-push
+  variables:
+    IMAGE: ci-images
+    TAG: bats
+  needs:
+    - job: build-bats
+      artifacts: true
diff --git a/images/bats/.dockerignore b/images/bats/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..72e8ffc0db8aad71a934dd11e5968bd5109e54b4
--- /dev/null
+++ b/images/bats/.dockerignore
@@ -0,0 +1 @@
+*
diff --git a/images/bats/Dockerfile b/images/bats/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..1ac5f2883a89414e029a4fbb9ce25cfa65a18ac6
--- /dev/null
+++ b/images/bats/Dockerfile
@@ -0,0 +1,11 @@
+FROM registry.hub.docker.com/library/alpine:3.14
+# hadolint ignore=DL3018
+RUN apk add --update --no-cache \
+        bats \
+        build-base \
+        docker-cli \
+        git \
+        openssh-client-default \
+        openssl \
+    && \
+    rm -rf /var/cache/apk/* /tmp/* /var/tmp/*