diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 71511ef5fe0b5680809c7c4858a32215ad3d5d4f..bd4ce79186d5e526ed097dabd2985e0458ac87ea 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -272,6 +272,7 @@ test:sytest:
   tags: ["docker"]
   variables:
     PLUGINS: "https://github.com/valkum/sytest_conduit/archive/master.tar.gz"
+  interruptible: true
   before_script:
     - "mkdir -p /app"
     - "cp ./conduit-debug-x86_64-unknown-linux-musl /app/conduit"
@@ -292,6 +293,40 @@ test:sytest:
     reports:
       junit: "$CI_PROJECT_DIR/sytest.xml"
 
+test:dockerlint:
+  stage: "test"
+  needs: []
+  image: "ghcr.io/hadolint/hadolint:latest-alpine"
+  interruptible: true
+  script:
+    # First pass: Print for CI log:
+    - >
+      hadolint
+      --no-fail --verbose
+      ./Dockerfile
+      ./docker/ci-binaries-packaging.Dockerfile
+    # Then output the results into a json for GitLab to pretty-print this in the MR:
+    - >
+      hadolint
+      --format gitlab_codeclimate
+      --failure-threshold error
+      ./Dockerfile
+      ./docker/ci-binaries-packaging.Dockerfile > dockerlint.json
+  artifacts:
+    when: always
+    reports:
+      codequality: dockerlint.json
+    paths:
+      - dockerlint.json
+  rules:
+    - if: '$CI_COMMIT_REF_NAME != "master"'
+      changes:
+        - docker/*Dockerfile
+        - Dockerfile
+        - .gitlab-ci.yml
+    - if: '$CI_COMMIT_REF_NAME == "master"'
+    - if: '$CI_COMMIT_REF_NAME == "next"'
+
 # --------------------------------------------------------------------- #
 #  Store binaries as package so they have download urls                 #
 # --------------------------------------------------------------------- #