diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 176ec286f88c00eb203d39deaae187248affc494..b563a5a8498ab5be7014d7dd29f34ccc49b279d5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,70 +1,37 @@
-# Official docker image.
-image: docker:latest
-
-variables:
-  DOCKER_DRIVER: overlay2
-  DOCKER_BUILDKIT: 1
-  TEXLIVE_IMAGE_UPSTREAM: texlive/texlive:latest
-  TEXLIVE_IMAGE: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/${TEXLIVE_IMAGE_UPSTREAM}
-
-# Docker in Docker Service
-services:
-  - name: docker:dind
-    command: ["--experimental"]
+image:
+  name: gcr.io/kaniko-project/executor:debug
+  entrypoint: [""]
 
 before_script:
-  - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-  - docker login -u "$CI_DEPENDENCY_PROXY_USER" -p "$CI_DEPENDENCY_PROXY_PASSWORD" $CI_DEPENDENCY_PROXY_SERVER
+  - mkdir -p /kaniko/.docker
+  - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
   - source environment
 
 build-main:
   script:
-    - docker build
-      --build-arg BUILDKIT_INLINE_CACHE=1
-      --build-arg LDAP_PLUGIN_URL="${LDAP_PLUGIN_URL}"
-      --cache-from $CI_REGISTRY_IMAGE:stage-src
-      --target src
-      -t "$CI_REGISTRY_IMAGE:stage-src"
-      -t "$CI_REGISTRY_IMAGE:stage-src-branch-$CI_COMMIT_REF_SLUG" .
-    - docker push "$CI_REGISTRY_IMAGE:stage-src"
-    - docker push "$CI_REGISTRY_IMAGE:stage-src-branch-$CI_COMMIT_REF_SLUG"
-    - docker build
-      --build-arg BUILDKIT_INLINE_CACHE=1
-      --build-arg LDAP_PLUGIN_URL="${LDAP_PLUGIN_URL}"
-      --pull
-      --cache-from $CI_REGISTRY_IMAGE:stage-texlive-update
-      --target texlive-update
-      -t "$CI_REGISTRY_IMAGE:stage-texlive-update"
-      -t "$CI_REGISTRY_IMAGE:stage-texlive-update-branch-$CI_COMMIT_REF_SLUG" .
-    - docker push "$CI_REGISTRY_IMAGE:stage-texlive-update"
-    - docker push "$CI_REGISTRY_IMAGE:stage-texlive-update-branch-$CI_COMMIT_REF_SLUG"
-    - docker build
-      --build-arg BUILDKIT_INLINE_CACHE=1
+    - /kaniko/executor
+      --cache=true
       --build-arg LDAP_PLUGIN_URL="${LDAP_PLUGIN_URL}"
+      --build-arg TEXLIVE_IMAGE="${TEXLIVE_IMAGE}"
       --build-arg login_text="${LOGIN_TEXT}"
       --build-arg collab_text="${COLLAB_TEXT}"
-      --pull
-      --cache-from $CI_REGISTRY_IMAGE
-      --target app --squash
-      -t "$CI_REGISTRY_IMAGE"
-      -t "$CI_REGISTRY_IMAGE:branch-$CI_COMMIT_REF_SLUG" .
-    - docker push "$CI_REGISTRY_IMAGE"
-    - docker push "$CI_REGISTRY_IMAGE:branch-$CI_COMMIT_REF_SLUG"
+      --context $CI_PROJECT_DIR
+      --dockerfile $CI_PROJECT_DIR/Dockerfile
+      --destination "$CI_REGISTRY_IMAGE"
+      --destination "$CI_REGISTRY_IMAGE:branch-$CI_COMMIT_REF_SLUG"
   only:
     - main
 
 build:
   script:
-    - docker build
-      --build-arg BUILDKIT_INLINE_CACHE=1
+    - /kaniko/executor
+      --cache=true
       --build-arg LDAP_PLUGIN_URL="${LDAP_PLUGIN_URL}"
       --build-arg TEXLIVE_IMAGE="${TEXLIVE_IMAGE}"
       --build-arg login_text="${LOGIN_TEXT}"
       --build-arg collab_text="${COLLAB_TEXT}"
-      --pull
-      --cache-from "$CI_REGISTRY_IMAGE:branch-$CI_COMMIT_REF_SLUG"
-      --cache-from "$CI_REGISTRY_IMAGE"
-      -t "$CI_REGISTRY_IMAGE:branch-$CI_COMMIT_REF_SLUG" .
-    - docker push "$CI_REGISTRY_IMAGE:branch-$CI_COMMIT_REF_SLUG"
+      --context $CI_PROJECT_DIR
+      --dockerfile $CI_PROJECT_DIR/Dockerfile
+      --destination "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
   except:
     - main