diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2b043dfed5b11310de31f05b4413103e05807f7e..87f924304ee209ab4fbae647b81ce5ad813ebd94 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,9 +9,6 @@ stages:
 
 .build: &build
   stage: build
-  only:
-    - main
-    - /^\d+[.]\d+[.]\d+$/
   cache:
     key: build
     paths:
@@ -20,6 +17,7 @@ stages:
     - go generate constant/version.go
     - CI_JOB_ARR=(${CI_JOB_NAME//-/ })
     - GOOS=${CI_JOB_ARR[0]} GOARCH=${CI_JOB_ARR[1]} CGO_ENABLED=0 go build -tags netgo -ldflags '-s -w -extldflags "-static"' -o ${CI_PROJECT_NAME}-${CI_JOB_ARR[0]}-${CI_JOB_ARR[2]}
+    - if [ "${CI_JOB_ARR[0]}" = "linux" ]; then ./upx --brute ${CI_PROJECT_NAME}-${CI_JOB_ARR[0]}-${CI_JOB_ARR[2]}; fi
   artifacts:
     name: "$CI_PROJECT_NAME"
     paths:
@@ -46,6 +44,20 @@ upload to s3:
     - aws configure set preview.cloudfront true
     - aws cloudfront create-invalidation --distribution-id $CLOUDFRONT_DISTRIBUTION_ID --paths "/utils/$CI_PROJECT_NAME/*"
 
+docker push:
+  image: gcr.io/cloud-builders/docker
+  stage: upload
+  only:
+    - main
+    - /^\d+[.]\d+[.]\d+$/
+  script:
+    - |
+      docker build -t $REGISTRY/$CI_PROJECT_NAME .
+      if [ "$CI_BUILD_REF_NAME" != "main" ]; then
+        docker tag $REGISTRY/$CI_PROJECT_NAME $REGISTRY/$CI_PROJECT_NAME:$CI_BUILD_REF_NAME
+      fi
+      docker push $REGISTRY/$CI_PROJECT_NAME
+
 "darwin-arm64-arm64": *build
 "darwin-amd64-amd64": *build
 "linux-arm-arm": *build
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..e2a74ce060c9d19c133b478833ba2a2f44b311b1
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,3 @@
+FROM scratch
+ADD dmarc-prometheus-exporter-linux-amd64 /usr/bin/dmarc-prometheus-exporter
+ENTRYPOINT ["/usr/bin/dmarc-prometheus-exporter", "run"]