diff --git a/src/com/mirantis/mcp/Docker.groovy b/src/com/mirantis/mcp/Docker.groovy
new file mode 100644
index 0000000..230ea73
--- /dev/null
+++ b/src/com/mirantis/mcp/Docker.groovy
@@ -0,0 +1,38 @@
+package com.mirantis.mcp
+
+/**
+ * Add LABEL to the end of the Dockerfile
+ * User can also add some custom properties
+ *
+ * @param dockerfilePath is the path to Dockerfile, the default is ./Dockerfile
+ * @param customProperties a Array of Strings that should be added to mandatory props
+ *        in format ["prop1=value1", "prop2=value2"]
+ * */
+def setDockerfileLabels(String dockerfilePath = "./Dockerfile", ArrayList customProperties = null) {
+
+    if (!fileExists(dockerfilePath)) {
+        throw new RuntimeException("Unable to add LABEL to Dockerfile, ${dockerfilePath} doesn't exists")
+    }
+    echo "Updating ${dockerfilePath}"
+
+    def namespace = "com.mirantis.image-specs."
+    def properties = [
+            "gerritProject=${env.GERRIT_PROJECT}",
+            "gerritChangeNumber=${env.GERRIT_CHANGE_NUMBER}",
+            "gerritPatchsetNumber=${env.GERRIT_PATCHSET_NUMBER}",
+            "gerritChangeId=${env.GERRIT_CHANGE_ID}",
+            "gerritPatchsetRevision=${env.GERRIT_PATCHSET_REVISION}"
+    ]
+
+    if (customProperties != null) {
+        properties.addAll(customProperties)
+    }
+    def common = new com.mirantis.mcp.Common()
+    def metadata = common.constructString(properties, namespace, " ")
+    sh """
+      cat <<EOF>> ${dockerfilePath}
+      # Apply additional build metadata
+      LABEL ${metadata}
+    """
+    return metadata
+}
