From 715839d29567915aa3779b2eb9d08e5f83876790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Istv=C3=A1n=20Lantos?= Date: Tue, 26 Mar 2024 13:52:29 +0100 Subject: [PATCH] Expose UNIX socket in entrypoint.sh for Docker implementation. #7221 --- Dockerfile | 4 ++-- pkg/docker/entrypoint.sh | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index a7c6c5a29..5a070cfdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -200,8 +200,8 @@ RUN apk add \ /venv/bin/python3 -m pip install --no-cache-dir gunicorn==20.1.0 && \ find / -type d -name '__pycache__' -exec rm -rf {} + && \ useradd -r -u 5050 -g root -s /sbin/nologin pgadmin && \ - mkdir -p /var/lib/pgadmin && \ - chown pgadmin:root /var/lib/pgadmin && \ + mkdir -p /run/pgadmin /var/lib/pgadmin && \ + chown pgadmin:root /run/pgadmin /var/lib/pgadmin && \ chmod g=u /var/lib/pgadmin && \ touch /pgadmin4/config_distro.py && \ chown pgadmin:root /pgadmin4/config_distro.py && \ diff --git a/pkg/docker/entrypoint.sh b/pkg/docker/entrypoint.sh index 8b164f5bd..925067939 100755 --- a/pkg/docker/entrypoint.sh +++ b/pkg/docker/entrypoint.sh @@ -101,8 +101,18 @@ TIMEOUT=$(cd /pgadmin4 && /venv/bin/python3 -c 'import config; print(config.SESS # NOTE: currently pgadmin can run only with 1 worker due to sessions implementation # Using --threads to have multi-threaded single-process worker -if [ -n "${PGADMIN_ENABLE_TLS}" ]; then - exec /venv/bin/gunicorn --limit-request-line "${GUNICORN_LIMIT_REQUEST_LINE:-8190}" --timeout "${TIMEOUT}" --bind "${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-443}" -w 1 --threads "${GUNICORN_THREADS:-25}" --access-logfile "${GUNICORN_ACCESS_LOGFILE:--}" --keyfile /certs/server.key --certfile /certs/server.cert -c gunicorn_config.py run_pgadmin:app +if [ -n "${PGADMIN_ENABLE_SOCK}" ]; then + BIND_ADDRESS="unix:/run/pgadmin/pgadmin.sock" else - exec /venv/bin/gunicorn --limit-request-line "${GUNICORN_LIMIT_REQUEST_LINE:-8190}" --timeout "${TIMEOUT}" --bind "${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-80}" -w 1 --threads "${GUNICORN_THREADS:-25}" --access-logfile "${GUNICORN_ACCESS_LOGFILE:--}" -c gunicorn_config.py run_pgadmin:app + if [ -n "${PGADMIN_ENABLE_TLS}" ]; then + BIND_ADDRESS="${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-443}" + else + BIND_ADDRESS="${PGADMIN_LISTEN_ADDRESS:-[::]}:${PGADMIN_LISTEN_PORT:-80}" + fi +fi + +if [ -n "${PGADMIN_ENABLE_TLS}" ]; then + exec /venv/bin/gunicorn --limit-request-line "${GUNICORN_LIMIT_REQUEST_LINE:-8190}" --timeout "${TIMEOUT}" --bind "${BIND_ADDRESS}" -w 1 --threads "${GUNICORN_THREADS:-25}" --access-logfile "${GUNICORN_ACCESS_LOGFILE:--}" --keyfile /certs/server.key --certfile /certs/server.cert -c gunicorn_config.py run_pgadmin:app +else + exec /venv/bin/gunicorn --limit-request-line "${GUNICORN_LIMIT_REQUEST_LINE:-8190}" --timeout "${TIMEOUT}" --bind "${BIND_ADDRESS}" -w 1 --threads "${GUNICORN_THREADS:-25}" --access-logfile "${GUNICORN_ACCESS_LOGFILE:--}" -c gunicorn_config.py run_pgadmin:app fi