mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-23 01:55:53 +03:00
a5545cf86d
As mentioned in #7397, switching to a debian base should help with multi-arch work to save time on compiling. This is unashamedly based on #6373, but without the extra functionality. Switch python version back to generic 3.7 to always pull the latest. Essentially, keeping this as small as possible. The image is bigger though unfortunately.
71 lines
1.6 KiB
Docker
71 lines
1.6 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}-slim as builder
|
|
|
|
# install the OS build deps
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
libpq-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Build dependencies that are not available as wheels, to speed up rebuilds
|
|
RUN pip install --prefix="/install" --no-warn-script-location \
|
|
frozendict \
|
|
jaeger-client \
|
|
opentracing \
|
|
prometheus-client \
|
|
psycopg2 \
|
|
pycparser \
|
|
pyrsistent \
|
|
pyyaml \
|
|
simplejson \
|
|
threadloop \
|
|
thrift
|
|
|
|
# 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}-slim
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
libpq5 \
|
|
xmlsec1 \
|
|
gosu \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
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"]
|