synapse/docker/Dockerfile-optimised

67 lines
1.7 KiB
Text
Raw Normal View History

2019-07-16 20:58:34 +03:00
# 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"]