diff --git a/docker/centos/binary/haproxy/Dockerfile b/docker/centos/binary/haproxy/Dockerfile
new file mode 100755
index 0000000000000000000000000000000000000000..40f2af6105bf4e8f7598cecbb4ce794f050df77c
--- /dev/null
+++ b/docker/centos/binary/haproxy/Dockerfile
@@ -0,0 +1,11 @@
+FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%%
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+RUN yum -y install \
+        haproxy \
+    && yum clean all
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
diff --git a/docker/centos/binary/haproxy/build b/docker/centos/binary/haproxy/build
new file mode 120000
index 0000000000000000000000000000000000000000..8d652f7ee21d162d383b4c4ce036c4ae1ae2f9fa
--- /dev/null
+++ b/docker/centos/binary/haproxy/build
@@ -0,0 +1 @@
+../../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/centos/binary/haproxy/config-external.sh b/docker/centos/binary/haproxy/config-external.sh
new file mode 120000
index 0000000000000000000000000000000000000000..75dc2b408772cd36b2b2ce552e012f89196ebd35
--- /dev/null
+++ b/docker/centos/binary/haproxy/config-external.sh
@@ -0,0 +1 @@
+../../../common/haproxy/config-external.sh
\ No newline at end of file
diff --git a/docker/centos/binary/haproxy/start.sh b/docker/centos/binary/haproxy/start.sh
new file mode 120000
index 0000000000000000000000000000000000000000..9b9c71e73f91a893b4622e738a71ae6693261984
--- /dev/null
+++ b/docker/centos/binary/haproxy/start.sh
@@ -0,0 +1 @@
+../../../common/haproxy/start.sh
\ No newline at end of file
diff --git a/docker/common/haproxy/config-external.sh b/docker/common/haproxy/config-external.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d267eb195ffcdba07780a03df8842338754fe23b
--- /dev/null
+++ b/docker/common/haproxy/config-external.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+SOURCE="/opt/kolla/haproxy/haproxy.cfg"
+TARGET="/etc/haproxy/haproxy.cfg"
+OWNER="root"
+
+if [[ -f "$SOURCE" ]]; then
+    rm $TARGET
+    cp $SOURCE $TARGET
+    chown ${OWNER}: $TARGET
+    chmod 0644 $TARGET
+fi
diff --git a/docker/common/haproxy/start.sh b/docker/common/haproxy/start.sh
new file mode 100755
index 0000000000000000000000000000000000000000..68600f44ee60da8adb0ab9266aeb0548ce252545
--- /dev/null
+++ b/docker/common/haproxy/start.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -o errexit
+
+CMD='/usr/sbin/haproxy'
+# Parameters:
+# -db for non-daemon execution and logging to stdout
+# -p pidfile to specify pidfile and allow hot reconfiguration
+# loop which generates -f file.conf for each file in /etc/haproxy and /etc/haproxy/conf.d
+ARGS="-db -f /etc/haproxy/haproxy.cfg"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+# Config-internal script exec out of this function, it does not return here.
+set_configs
+
+exec $CMD $ARGS
diff --git a/docs/minimal-environment-vars.md b/docs/minimal-environment-vars.md
index 53c68af542f21268d8e10da0f7dc5a4a82557bd4..0bf21ecc63c139dfb91a7709d83dedf9c12bfab3 100644
--- a/docs/minimal-environment-vars.md
+++ b/docs/minimal-environment-vars.md
@@ -229,6 +229,10 @@ In order for each service to function, there is a minimum set of required variab
     GLANCE_DB_USER
     MARIADB_SERVICE_HOST
 
+# Haproxy
+
+    None
+
 # Hautoproxy
 
     None