2021-04-14 14:54:49 +02:00
|
|
|
# Inherit from the official Synapse docker image
|
|
|
|
FROM matrixdotorg/synapse
|
|
|
|
|
|
|
|
# Install deps
|
2022-04-14 16:36:49 +02:00
|
|
|
RUN \
|
|
|
|
--mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
|
|
apt-get update && \
|
|
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
|
|
redis-server nginx-light
|
2021-04-14 14:54:49 +02:00
|
|
|
|
2022-04-14 16:36:49 +02:00
|
|
|
# Install supervisord with pip instead of apt, to avoid installing a second
|
|
|
|
# copy of python.
|
|
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
|
|
pip install supervisor~=4.2
|
|
|
|
|
|
|
|
# Disable the default nginx sites
|
2021-04-14 14:54:49 +02:00
|
|
|
RUN rm /etc/nginx/sites-enabled/default
|
|
|
|
|
|
|
|
# Copy Synapse worker, nginx and supervisord configuration template files
|
|
|
|
COPY ./docker/conf-workers/* /conf/
|
|
|
|
|
2022-04-27 15:39:41 +02:00
|
|
|
# Copy a script to prefix log lines with the supervisor program name
|
|
|
|
COPY ./docker/prefix-log /usr/local/bin/
|
|
|
|
|
2021-04-14 14:54:49 +02:00
|
|
|
# Expose nginx listener port
|
|
|
|
EXPOSE 8080/tcp
|
|
|
|
|
|
|
|
# A script to read environment variables and create the necessary
|
|
|
|
# files to run the desired worker configuration. Will start supervisord.
|
|
|
|
COPY ./docker/configure_workers_and_start.py /configure_workers_and_start.py
|
|
|
|
ENTRYPOINT ["/configure_workers_and_start.py"]
|
2021-11-26 15:05:20 +01:00
|
|
|
|
2022-04-14 16:36:49 +02:00
|
|
|
# Replace the healthcheck with one which checks *all* the workers. The script
|
|
|
|
# is generated by configure_workers_and_start.py.
|
2021-11-26 15:05:20 +01:00
|
|
|
HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \
|
|
|
|
CMD /bin/sh /healthcheck.sh
|