diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5d2a6df40d1ffb32c18c8549dac0ad10ab46952c..4765ca095249eec92de23862121702146805f4fe 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,12 +1,11 @@
-image: docker:19.03.1
+image: docker:19.03.12
 
 variables:
   DOCKER_TLS_CERTDIR: "/certs"
-  IMAGE_TAG: $CI_REGISTRY_IMAGE
   IMAGE_VER: 1.8.0
 
 services:
-  - docker:19.03.1-dind
+  - docker:19.03.12-dind
 
 before_script:
   - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
@@ -14,7 +13,7 @@ before_script:
 build:
   stage: build
   script:
-    - docker build -t $IMAGE_TAG:$IMAGE_VER .
-    - docker tag $IMAGE_TAG:$IMAGE_VER $IMAGE_TAG:latest
-    - docker push $IMAGE_TAG:$IMAGE_VER
-    - docker push $IMAGE_TAG:latest
+    - docker pull $IMAGE_TAG:latest || true
+    - docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$IMAGE_VER --tag $CI_REGISTRY_IMAGE:latest .
+    - docker push $CI_REGISTRY_IMAGE:$IMAGE_VER
+    - docker push $CI_REGISTRY_IMAGE:latest