summary refs log tree commit diff
path: root/docker/Dockerfile-optimised
diff options
context:
space:
mode:
authorAmber H. Brown <hawkowl@atleastfornow.net>2019-07-17 03:58:34 +1000
committerAmber H. Brown <hawkowl@atleastfornow.net>2019-07-17 03:58:34 +1000
commit646292cfb197d9967a8e2d4355cca267616767e6 (patch)
tree1ac55a24e6587b0a92c59d823da618a73652409d /docker/Dockerfile-optimised
parentMerge remote-tracking branch 'origin/develop' into shhs (diff)
downloadsynapse-646292cfb197d9967a8e2d4355cca267616767e6.tar.xz
see if we can do a build!
Diffstat (limited to 'docker/Dockerfile-optimised')
-rw-r--r--docker/Dockerfile-optimised66
1 files changed, 66 insertions, 0 deletions
diff --git a/docker/Dockerfile-optimised b/docker/Dockerfile-optimised
new file mode 100644
index 0000000000..cc6f37a9e1
--- /dev/null
+++ b/docker/Dockerfile-optimised
@@ -0,0 +1,66 @@
+# Dockerfile to build the matrixdotorg/synapse docker images.
+#
+# To build the image, run `docker build` command from the root of the
+# synapse repository:
+#
+#    docker build -f docker/Dockerfile .
+#
+# There is an optional PYTHON_VERSION build argument which sets the
+# version of python to build against: for example:
+#
+#    docker build -f docker/Dockerfile --build-arg PYTHON_VERSION=3.6 .
+#
+
+ARG PYTHON_VERSION=3.7.4
+ARG MARCH=skylake-avx512
+
+###
+### Stage 0: builder
+###
+FROM matrixdotorg/optimised-python:${PYTHON_VERSION}-optimized-lto-${MARCH} as builder
+
+# install the OS build deps
+
+RUN apt-get install -y build-essential libpq5-dev libffi-dev libexpat1-dev libxml2-dev libxslt-dev
+
+# build things which have slow build steps, before we copy synapse, so that
+# the layer can be cached.
+#
+# (we really just care about caching a wheel here, as the "pip install" below
+# will install them again.)
+
+RUN pip install --prefix="/install" --no-warn-script-location \
+        cryptography \
+        msgpack-python \
+        pillow \
+        pynacl
+
+# now install synapse and all of the python deps to /install.
+
+COPY synapse /synapse/synapse/
+COPY scripts /synapse/scripts/
+COPY MANIFEST.in README.rst setup.py synctl /synapse/
+
+RUN pip install --prefix="/install" --no-warn-script-location \
+        /synapse[all]
+
+RUN chown -R root:root /usr/local /install
+
+###
+### Stage 1: runtime
+###
+
+FROM matrixdotorg/optimised-python:${PYTHON_VERSION}-optimized-lto-${MARCH}
+
+# xmlsec is required for saml support
+RUN apt install libpq5 xmlsec libxslt1
+
+COPY --from=builder /install /usr/local
+COPY ./docker/start.py /start.py
+COPY ./docker/conf /conf
+
+VOLUME ["/data"]
+
+EXPOSE 8008/tcp 8009/tcp 8448/tcp
+
+ENTRYPOINT ["/start.py"]