diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 45d26ed45bb54609146a72474cf659f385a69b00..4764ed28a4c20480fdd96a9ef7e4d8a067a06335 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,17 +9,20 @@ services:
 
 before_script:
   - docker info
+  - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
+  - printenv
 
 build:
   stage: build
   script:
-    - docker build -t django .
+    - docker pull ${DOCKER_IMAGE}:latest || true
+    - docker build --cache-from ${DOCKER_IMAGE}:latest --tag ${DOCKER_IMAGE}:latest -t ${DOCKER_IMAGE}:${CI_COMMIT_SHA} .
+    - docker push ${DOCKER_IMAGE}:${CI_COMMIT_SHA}
+    - docker push ${DOCKER_IMAGE}:latest
 
 deploy:
   stage: deploy
   script:
-    - printenv
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" 
     - docker pull ${CI_REGISTRY_IMAGE}
     - docker logout
     - docker tag ${CI_PROJECT_NAME} ${DOCKER_USER}/${DOCKER_IMAGE}