mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-12-17 00:44:20 -05:00
synapse-workers docker: copy nginx and redis in from base images (#13447)
Part of my continuing quest to make the docker images build quicker: copy nginx and redis in from base docker images, rather than apt installing each time.
This commit is contained in:
parent
a91078200d
commit
166fafdf8d
1
changelog.d/13447.misc
Normal file
1
changelog.d/13447.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Improve rebuild speed for the "synapse-workers" docker image.
|
@ -1,9 +1,12 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
# Inherit from the official Synapse docker image
|
|
||||||
ARG SYNAPSE_VERSION=latest
|
|
||||||
FROM matrixdotorg/synapse:$SYNAPSE_VERSION
|
|
||||||
|
|
||||||
# Install deps
|
ARG SYNAPSE_VERSION=latest
|
||||||
|
|
||||||
|
# first of all, we create a base image with an nginx which we can copy into the
|
||||||
|
# target image. For repeated rebuilds, this is much faster than apt installing
|
||||||
|
# each time.
|
||||||
|
|
||||||
|
FROM debian:bullseye-slim AS deps_base
|
||||||
RUN \
|
RUN \
|
||||||
--mount=type=cache,target=/var/cache/apt,sharing=locked \
|
--mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||||
@ -11,13 +14,33 @@ RUN \
|
|||||||
DEBIAN_FRONTEND=noninteractive apt-get install -yqq --no-install-recommends \
|
DEBIAN_FRONTEND=noninteractive apt-get install -yqq --no-install-recommends \
|
||||||
redis-server nginx-light
|
redis-server nginx-light
|
||||||
|
|
||||||
|
# Similarly, a base to copy the redis server from.
|
||||||
|
#
|
||||||
|
# The redis docker image has fewer dynamic libraries than the debian package,
|
||||||
|
# which makes it much easier to copy (but we need to make sure we use an image
|
||||||
|
# based on the same debian version as the synapse image, to make sure we get
|
||||||
|
# the expected version of libc.
|
||||||
|
FROM redis:6-bullseye AS redis_base
|
||||||
|
|
||||||
|
# now build the final image, based on the the regular Synapse docker image
|
||||||
|
FROM matrixdotorg/synapse:$SYNAPSE_VERSION
|
||||||
|
|
||||||
# Install supervisord with pip instead of apt, to avoid installing a second
|
# Install supervisord with pip instead of apt, to avoid installing a second
|
||||||
# copy of python.
|
# copy of python.
|
||||||
RUN --mount=type=cache,target=/root/.cache/pip \
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
||||||
pip install supervisor~=4.2
|
pip install supervisor~=4.2
|
||||||
|
RUN mkdir -p /etc/supervisor/conf.d
|
||||||
|
|
||||||
# Disable the default nginx sites
|
# Copy over redis and nginx
|
||||||
|
COPY --from=redis_base /usr/local/bin/redis-server /usr/local/bin
|
||||||
|
|
||||||
|
COPY --from=deps_base /usr/sbin/nginx /usr/sbin
|
||||||
|
COPY --from=deps_base /usr/share/nginx /usr/share/nginx
|
||||||
|
COPY --from=deps_base /usr/lib/nginx /usr/lib/nginx
|
||||||
|
COPY --from=deps_base /etc/nginx /etc/nginx
|
||||||
RUN rm /etc/nginx/sites-enabled/default
|
RUN rm /etc/nginx/sites-enabled/default
|
||||||
|
RUN mkdir /var/log/nginx /var/lib/nginx
|
||||||
|
RUN chown www-data /var/log/nginx /var/lib/nginx
|
||||||
|
|
||||||
# Copy Synapse worker, nginx and supervisord configuration template files
|
# Copy Synapse worker, nginx and supervisord configuration template files
|
||||||
COPY ./docker/conf-workers/* /conf/
|
COPY ./docker/conf-workers/* /conf/
|
||||||
|
@ -19,7 +19,7 @@ username=www-data
|
|||||||
autorestart=true
|
autorestart=true
|
||||||
|
|
||||||
[program:redis]
|
[program:redis]
|
||||||
command=/usr/local/bin/prefix-log /usr/bin/redis-server /etc/redis/redis.conf --daemonize no
|
command=/usr/local/bin/prefix-log /usr/local/bin/redis-server
|
||||||
priority=1
|
priority=1
|
||||||
stdout_logfile=/dev/stdout
|
stdout_logfile=/dev/stdout
|
||||||
stdout_logfile_maxbytes=0
|
stdout_logfile_maxbytes=0
|
||||||
|
Loading…
Reference in New Issue
Block a user