diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9532dc461fcd0f6e620559458e9dec86085a1a9f..91d3ae2a2fb4e639c790599f0986d6f78b01bea1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,10 +5,6 @@ services:
 stages:
   - build
 
-variables:
-  DOCKER_REGISTRY: ${CI_REGISTRY}
-  DOCKER_IMAGE_PREFIX: ${CI_PROJECT_PATH}/
-
 before_script:
   - docker info
   - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN ${CI_REGISTRY}
diff --git a/image.mk b/image.mk
index dff4daabbe02e9acae72b3d719d06622fe7298c0..12b336dc7b7ef6b76c58ea8ccef5d2c27087f2e9 100644
--- a/image.mk
+++ b/image.mk
@@ -1,42 +1,40 @@
-OS := debian
-
-IMAGE_PREFIX := ${DOCKER_IMAGE_PREFIX}
-ifeq ($(IMAGE_PREFIX),)
-IMAGE_PREFIX := icinga/debian/
+ifndef CI_REGISTRY
+CI_REGISTRY := registry.icinga.com
 endif
-
-REGISTRY := ${DOCKER_REGISTRY}
-ifneq ($(REGISTRY),)
-IMAGE_PREFIX := $(REGISTRY)/$(IMAGE_PREFIX)
+ifeq ($(CI_PROJECT_PATH),)
+CI_PROJECT_PATH := build-docker/debian
 endif
 
 FROM := $(shell grep FROM Dockerfile | cut -d" " -f2)
 DIST := $(shell basename $$(dirname `pwd`))
 VARIANT := $(shell basename `pwd`)
-IMAGE := $(IMAGE_PREFIX)$(DIST):$(VARIANT)
+
+IMAGE := $(CI_PROJECT_PATH)/$(DIST)
+
+ifneq ($(CI_REGISTRY),)
+IMAGE := $(CI_REGISTRY)/$(IMAGE)
+endif
 
 ifeq ($(VARIANT),x86_64)
-IMAGE_EXTRA := $(IMAGE_PREFIX)$(DIST):latest
-else
-IMAGE_EXTRA :=
+IMAGE_EXTRA_TAG := latest
 endif
 
 all: pull build
 
 pull:
-	docker pull "$(IMAGE)" || true
+	docker pull "$(IMAGE):$(VARIANT)" || true
 	docker pull "$(FROM)"
 
 build:
-	docker build --cache-from "${IMAGE}" --tag "$(IMAGE)" .
-ifneq ($(IMAGE_EXTRA),)
-	docker tag "$(IMAGE)" "$(IMAGE_EXTRA)"
+	docker build --cache-from "$(IMAGE):$(VARIANT)" --tag "$(IMAGE):$(VARIANT)" .
+ifdef IMAGE_EXTRA_TAG
+	docker tag "$(IMAGE):$(VARIANT)" "$(IMAGE):$(IMAGE_EXTRA_TAG)"
 endif
 
 push:
 	docker push "$(IMAGE)"
-ifneq ($(IMAGE_EXTRA),)
-	docker push "$(IMAGE_EXTRA)"
+ifdef IMAGE_EXTRA_TAG
+	docker push "$(IMAGE):$(IMAGE_EXTRA_TAG)"
 endif
 
 clean: