mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
3ef71a6ea0
There are two reasons this is a good thing: * first, it means that you don't end up with stuff kicking around your working copy ending up in the build image by mistake (which can upset the pip install process) * second: it means that the docker image cache is more effective, and we can reuse docker images when iterating on the docker stuff.
65 lines
1.4 KiB
Docker
65 lines
1.4 KiB
Docker
ARG PYTHON_VERSION=2
|
|
|
|
###
|
|
### Stage 0: builder
|
|
###
|
|
FROM docker.io/python:${PYTHON_VERSION}-alpine3.8 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.8
|
|
|
|
RUN apk add --no-cache --virtual .runtime_deps \
|
|
libffi \
|
|
libjpeg-turbo \
|
|
libressl \
|
|
libxslt \
|
|
libpq \
|
|
zlib \
|
|
su-exec
|
|
|
|
COPY --from=builder /install /usr/local
|
|
COPY ./docker/start.py /start.py
|
|
COPY ./docker/conf /conf
|
|
|
|
VOLUME ["/data"]
|
|
|
|
EXPOSE 8008/tcp 8448/tcp
|
|
|
|
ENTRYPOINT ["/start.py"]
|