Skip to content
Snippets Groups Projects
Dockerfile-workers 1.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Inherit from the official Synapse docker image
    FROM matrixdotorg/synapse
    
    # Install deps
    
    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
    
    # 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
    
    RUN rm /etc/nginx/sites-enabled/default
    
    # Copy Synapse worker, nginx and supervisord configuration template files
    COPY ./docker/conf-workers/* /conf/
    
    # 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"]
    
    # Replace the healthcheck with one which checks *all* the workers. The script
    # is generated by configure_workers_and_start.py.
    
    HEALTHCHECK --start-period=5s --interval=15s --timeout=5s \
        CMD /bin/sh /healthcheck.sh