Bladeren bron

Dockerfile-workers: reduce the amount we install (#12464)

This is an attempt to reduce the rebuild time. In short, we reduce the amount
of stuff that the dockerfile installs, so as to give a faster startup.
tags/v1.58.0rc1
Richard van der Hoff 2 jaren geleden
committed by GitHub
bovenliggende
commit
aaaff98202
Geen bekende sleutel gevonden voor deze handtekening in de database GPG sleutel-ID: 4AEE18F83AFDEB23
4 gewijzigde bestanden met toevoegingen van 27 en 13 verwijderingen
  1. +1
    -0
      changelog.d/12464.misc
  2. +14
    -3
      docker/Dockerfile-workers
  3. +3
    -0
      docker/conf-workers/supervisord.conf.j2
  4. +9
    -10
      docker/configure_workers_and_start.py

+ 1
- 0
changelog.d/12464.misc Bestand weergeven

@@ -0,0 +1 @@
Dockerfile-workers: reduce the amount we install in the image.

+ 14
- 3
docker/Dockerfile-workers Bestand weergeven

@@ -2,10 +2,19 @@
FROM matrixdotorg/synapse

# Install deps
RUN apt-get update
RUN apt-get install -y supervisor redis nginx
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

# Remove the default nginx sites
# 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
@@ -19,5 +28,7 @@ EXPOSE 8080/tcp
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

+ 3
- 0
docker/conf-workers/supervisord.conf.j2 Bestand weergeven

@@ -5,6 +5,9 @@
nodaemon=true
user=root

[include]
files = /etc/supervisor/conf.d/*.conf

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
priority=500


+ 9
- 10
docker/configure_workers_and_start.py Bestand weergeven

@@ -502,9 +502,10 @@ def generate_worker_files(environ, config_path: str, data_dir: str):
)

# Supervisord config
os.makedirs("/etc/supervisor", exist_ok=True)
convert(
"/conf/supervisord.conf.j2",
"/etc/supervisor/conf.d/supervisord.conf",
"/etc/supervisor/supervisord.conf",
main_config_path=config_path,
worker_config=supervisord_config,
)
@@ -546,14 +547,6 @@ def generate_worker_log_config(
return log_config_filepath


def start_supervisord():
"""Starts up supervisord which then starts and monitors all other necessary processes

Raises: CalledProcessError if calling start.py return a non-zero exit code.
"""
subprocess.run(["/usr/bin/supervisord"], stdin=subprocess.PIPE)


def main(args, environ):
config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data")
config_path = environ.get("SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml")
@@ -581,7 +574,13 @@ def main(args, environ):

# Start supervisord, which will start Synapse, all of the configured worker
# processes, redis, nginx etc. according to the config we created above.
start_supervisord()
log("Starting supervisord")
os.execl(
"/usr/local/bin/supervisord",
"supervisord",
"-c",
"/etc/supervisor/supervisord.conf",
)


if __name__ == "__main__":


Laden…
Annuleren
Opslaan