diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..66c990adfd3a30204a536d3597abc72b2897e09b
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,24 @@
+default:
+  image: docker:latest
+
+stages:
+  - build
+
+variables:
+  PACKAGE_NAME: "gnina"
+  DOCKER_IMAGE: "$CI_REGISTRY_IMAGE/$PACKAGE_NAME"
+  DOCKER_TLS_CERTDIR: "/certs"
+
+before_script:
+  - unset DOCKER_HOST
+  - echo "${CI_REGISTRY_PASSWORD}" | docker login -u "${CI_REGISTRY_USER}" --password-stdin ${CI_REGISTRY}
+
+push_docker_image:
+  stage: build
+  services:
+    - docker:dind
+  script:
+    - docker build -t $DOCKER_IMAGE:$CI_COMMIT_SHORT_SHA -f docker/Dockerfile .
+    - docker push $DOCKER_IMAGE:$CI_COMMIT_SHORT_SHA
+  only:
+    - main  # Only run on the main branch