b71375fac7
This was mostly affecting the stream writer (events) worker, which was being reported as unhealthy. It wasn't causing any issues, but it just looked odd and was confusing people. As an alternative to hitting the regular `/health` healthcheck route (on the "client" API which this stream writer does not expose), we may have went for hitting some "replication" API endpoint instead. This is more complicated and likely unnecessary.
70 lines
4 KiB
Django/Jinja
70 lines
4 KiB
Django/Jinja
#jinja2: lstrip_blocks: "True"
|
||
[Unit]
|
||
Description=Synapse worker ({{ matrix_synapse_worker_container_name }})
|
||
AssertPathExists={{ matrix_synapse_config_dir_path }}/{{ matrix_synapse_worker_config_file_name }}
|
||
After=matrix-synapse.service
|
||
|
||
[Service]
|
||
Type=simple
|
||
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
|
||
|
||
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} kill {{ matrix_synapse_worker_container_name }} 2>/dev/null || true'
|
||
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_synapse_worker_container_name }} 2>/dev/null || true'
|
||
|
||
# Intentional delay, so that the homeserver can manage to start.
|
||
ExecStartPre={{ matrix_host_command_sleep }} 5
|
||
|
||
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
|
||
--rm \
|
||
--name={{ matrix_synapse_worker_container_name }} \
|
||
--log-driver=none \
|
||
--user={{ matrix_synapse_uid }}:{{ matrix_synapse_gid }} \
|
||
--cap-drop=ALL \
|
||
--read-only \
|
||
--tmpfs=/tmp:rw,noexec,nosuid,size={{ matrix_synapse_tmp_directory_size_mb }}m \
|
||
--network={{ matrix_synapse_container_network }} \
|
||
{% if matrix_synapse_worker_details.port != 0 and matrix_synapse_worker_details.webserving %}
|
||
--health-cmd 'curl -fSs http://localhost:{{ matrix_synapse_worker_details.port }}/health || exit 1' \
|
||
{% else %}
|
||
--no-healthcheck \
|
||
{% endif %}
|
||
{% if matrix_synapse_workers_enabled and matrix_synapse_workers_container_host_bind_address %}
|
||
{% if matrix_synapse_worker_details.port != 0 %}
|
||
-p {{ '' if matrix_synapse_workers_container_host_bind_address == '*' else (matrix_synapse_workers_container_host_bind_address + ':') }}{{ matrix_synapse_worker_details.port }}:{{ matrix_synapse_worker_details.port }} \
|
||
{% endif %}
|
||
{% if matrix_synapse_worker_details.metrics_port != 0 %}
|
||
-p {{ '' if matrix_synapse_workers_container_host_bind_address == '*' else (matrix_synapse_workers_container_host_bind_address + ':') }}{{ matrix_synapse_worker_details.metrics_port }}:{{ matrix_synapse_worker_details.metrics_port }} \
|
||
{% endif %}
|
||
{% endif %}
|
||
--mount type=bind,src={{ matrix_synapse_config_dir_path }},dst=/data,ro \
|
||
--mount type=bind,src={{ matrix_synapse_storage_path }},dst=/matrix-media-store-parent,bind-propagation=slave \
|
||
{% for volume in matrix_synapse_container_additional_volumes %}
|
||
-v {{ volume.src }}:{{ volume.dst }}:{{ volume.options }} \
|
||
{% endfor %}
|
||
{% for arg in matrix_synapse_container_arguments %}
|
||
{{ arg }} \
|
||
{% endfor %}
|
||
{{ matrix_synapse_docker_image_final }} \
|
||
run -m synapse.app.{{ matrix_synapse_worker_details.app }} -c /data/homeserver.yaml -c /data/{{ matrix_synapse_worker_config_file_name }}
|
||
|
||
{% for network in matrix_synapse_container_additional_networks %}
|
||
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} {{ matrix_synapse_worker_container_name }}
|
||
{% endfor %}
|
||
|
||
ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_synapse_worker_container_name }}
|
||
|
||
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} kill {{ matrix_synapse_worker_container_name }} 2>/dev/null || true'
|
||
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_synapse_worker_container_name }} 2>/dev/null || true'
|
||
|
||
ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec {{ matrix_synapse_worker_container_name }} /bin/sh -c 'kill -HUP 1'
|
||
Restart=always
|
||
RestartSec=30
|
||
SyslogIdentifier={{ matrix_synapse_worker_container_name }}
|
||
|
||
# Intentionally not making this WantedBy=matrix-synapse.service,
|
||
# as matrix.synapse.service already has `Wants=` lines.
|
||
# Also, WantedBy will trigger the creation of some `matrix-synapse.service.wants/` directory,
|
||
# which we'd have to clean, etc. Better not.
|
||
[Install]
|
||
WantedBy=multi-user.target
|