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