mirror of
https://github.com/element-hq/synapse
synced 2024-08-20 19:00:21 +00:00
Alpine Linux 3.8 is still supported, but it seems like it's quite outdated now. While Python should be the same on both, all other libraries, etc., are much newer in Alpine 3.9 and 3.10. Signed-off-by: Slavi Pantaleev <slavi@devture.com>
80 lines
1.8 KiB
Docker
80 lines
1.8 KiB
Docker
# 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
|
|
|
|
###
|
|
### Stage 0: builder
|
|
###
|
|
FROM docker.io/python:${PYTHON_VERSION}-alpine3.10 as builder
|
|
|
|
# install the OS build deps
|
|
|
|
RUN apk add \
|
|
build-base \
|
|
libffi-dev \
|
|
libjpeg-turbo-dev \
|
|
libressl-dev \
|
|
libxslt-dev \
|
|
linux-headers \
|
|
postgresql-dev \
|
|
zlib-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]
|
|
|
|
###
|
|
### Stage 1: runtime
|
|
###
|
|
|
|
FROM docker.io/python:${PYTHON_VERSION}-alpine3.10
|
|
|
|
# xmlsec is required for saml support
|
|
RUN apk add --no-cache --virtual .runtime_deps \
|
|
libffi \
|
|
libjpeg-turbo \
|
|
libressl \
|
|
libxslt \
|
|
libpq \
|
|
zlib \
|
|
su-exec \
|
|
tzdata \
|
|
xmlsec
|
|
|
|
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"]
|