diff --git a/docker/manila/manila-api/Dockerfile.j2 b/docker/manila/manila-api/Dockerfile.j2
new file mode 100644
index 0000000000000000000000000000000000000000..ac2fe479d2673a88953a3adbbcdb256070de23fd
--- /dev/null
+++ b/docker/manila/manila-api/Dockerfile.j2
@@ -0,0 +1,9 @@
+FROM {{ namespace }}/{{ image_prefix }}manila-base:{{ tag }}
+MAINTAINER {{ maintainer }}
+
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+RUN chmod 755 /usr/local/bin/kolla_extend_start
+
+{{ include_footer }}
+
+USER manila
diff --git a/docker/manila/manila-api/extend_start.sh b/docker/manila/manila-api/extend_start.sh
new file mode 100644
index 0000000000000000000000000000000000000000..bea77dbba4876cdc6a821fa965c56798feec9e7e
--- /dev/null
+++ b/docker/manila/manila-api/extend_start.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -o errexit
+
+# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases
+# of the KOLLA_BOOTSTRAP variable being set, including empty.
+if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
+    manila-manage db sync
+    exit 0
+fi
diff --git a/docker/manila/manila-base/Dockerfile.j2 b/docker/manila/manila-base/Dockerfile.j2
new file mode 100644
index 0000000000000000000000000000000000000000..adbcc9711665b7968f6f419fa4a527f1a468521f
--- /dev/null
+++ b/docker/manila/manila-base/Dockerfile.j2
@@ -0,0 +1,21 @@
+FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}
+MAINTAINER {{ maintainer }}
+
+{% if install_type == 'binary' %}
+
+RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
+    && /bin/false
+
+{% elif install_type == 'source' %}
+
+ADD manila-base-archive /manila-base-source
+RUN ln -s manila-base-source/* manila \
+    && useradd --user-group manila \
+    && /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt /manila \
+    && mkdir -p /etc/manila /var/log/manila /home/manila \
+    && cp -r /manila/etc/manila/* /etc/manila/ \
+    && chown -R manila: /etc/manila /var/log/manila /home/manila
+
+{% endif %}
+
+RUN usermod -a -G kolla manila
diff --git a/docker/manila/manila-scheduler/Dockerfile.j2 b/docker/manila/manila-scheduler/Dockerfile.j2
new file mode 100644
index 0000000000000000000000000000000000000000..a3ca1820bb3e0e9c2b98203a91b87cc1eaf7c5c2
--- /dev/null
+++ b/docker/manila/manila-scheduler/Dockerfile.j2
@@ -0,0 +1,6 @@
+FROM {{ namespace }}/{{ image_prefix }}manila-base:{{ tag }}
+MAINTAINER {{ maintainer }}
+
+{{ include_footer }}
+
+USER manila
diff --git a/docker/manila/manila-share/Dockerfile.j2 b/docker/manila/manila-share/Dockerfile.j2
new file mode 100644
index 0000000000000000000000000000000000000000..a3ca1820bb3e0e9c2b98203a91b87cc1eaf7c5c2
--- /dev/null
+++ b/docker/manila/manila-share/Dockerfile.j2
@@ -0,0 +1,6 @@
+FROM {{ namespace }}/{{ image_prefix }}manila-base:{{ tag }}
+MAINTAINER {{ maintainer }}
+
+{{ include_footer }}
+
+USER manila
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 478d2a5d2fa6ad04172e3960ea3265ff422b8987..a6222bded5ad1ca21de43dde768d8cbd9b0c043b 100644
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -187,6 +187,10 @@ SOURCES = {
         'type': 'url',
         'location': ('http://tarballs.openstack.org/magnum/'
                      'magnum-master.tar.gz')},
+    'manila-base': {
+        'type': 'url',
+        'location': ('http://tarballs.openstack.org/manila/'
+                     'manila-master.tar.gz')},
     'mistral-base': {
         'type': 'url',
         'location': ('http://tarballs.openstack.org/mistral/'
diff --git a/tests/test_build.py b/tests/test_build.py
index bfc334f969f808f5bca8769b8b35092fb65f731c..8fec97ebbccd083eaea2af442b8985f6faaa4108 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -47,7 +47,8 @@ class BuildTest(base.BaseTestCase):
                            "murano-base",
                            "ironic-pxe",
                            "ironic-discoverd",
-                           "mistral-base"]
+                           "mistral-base",
+                           "manila-base"]
 
         failures = 0
         for image, result in six.iteritems(bad_results):