summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsupahgreg <supahgreg@users.noreply.github.com>2025-10-11 04:43:32 +0000
committersupahgreg <supahgreg@users.noreply.github.com>2025-10-11 04:43:32 +0000
commita38fc031f016aeb36d4eadf9ec6ca1a21ef66768 (patch)
tree7be75aa665a7c104d002c0c04855bfee101182cd
parent72085a217679fe5fa228712083efaf770e7fa6b1 (diff)
web-nginx image: fix undefined var errors, improve healthcheck.
Previously the healthcheck wouldn't respect an 'APP_BASE' env var override at runtime. This also sets some HEALTHCHECK+curl options.
-rw-r--r--.docker/web-nginx/Dockerfile31
1 files changed, 19 insertions, 12 deletions
diff --git a/.docker/web-nginx/Dockerfile b/.docker/web-nginx/Dockerfile
index 3c7b42e2d..d9f99c56c 100644
--- a/.docker/web-nginx/Dockerfile
+++ b/.docker/web-nginx/Dockerfile
@@ -1,29 +1,36 @@
FROM nginx:1.29.2-alpine
-HEALTHCHECK CMD curl --fail http://localhost${APP_BASE}/index.php || exit 1
-
-COPY .docker/web-nginx/nginx.conf /etc/nginx/templates/nginx.conf.template
+ARG APP_UPSTREAM=app
+ARG APP_FASTCGI_PASS=\$backend
+ARG APP_WEB_ROOT=/var/www/html
+ARG APP_BASE=/tt-rss
+ARG RESOLVER=127.0.0.11
# By default, nginx will send the php requests to "app" server, but this server
# name can be overridden at runtime by passing an APP_UPSTREAM env var
-ENV APP_UPSTREAM=${APP_UPSTREAM:-app}
-ENV APP_FASTCGI_PASS="${APP_FASTCGI_PASS:-\$backend}"
+ENV APP_UPSTREAM=${APP_UPSTREAM}
+ENV APP_FASTCGI_PASS="${APP_FASTCGI_PASS}"
-# Webroot (defaults to /var/www/html)
-ENV APP_WEB_ROOT=${APP_WEB_ROOT:-/var/www/html}
+# Web root (defaults to /var/www/html)
+ENV APP_WEB_ROOT=${APP_WEB_ROOT}
# Base location for tt-rss (defaults to /tt-rss)
-ENV APP_BASE=${APP_BASE:-/tt-rss}
+ENV APP_BASE=${APP_BASE}
-# Resolver for nginx (kube-dns.kube-system.svc.cluster.local for k8s)
-ENV RESOLVER=${RESOLVER:-127.0.0.11}
-
-# In order to make tt-rss appear on website root without /tt-rss/ set above as follows in .env:
+# NOTE: In order to make tt-rss appear on website root without /tt-rss/ set the following in .env:
# APP_WEB_ROOT=/var/www/html/tt-rss
# APP_BASE=
+# Resolver for nginx (kube-dns.kube-system.svc.cluster.local for k8s)
+ENV RESOLVER=${RESOLVER}
+
# It's necessary to set the following NGINX_ENVSUBST_OUTPUT_DIR env var to tell
# nginx to replace the env vars of /etc/nginx/templates/nginx.conf.template
# and put the result in /etc/nginx/nginx.conf (instead of /etc/nginx/conf.d/nginx.conf)
# See https://github.com/docker-library/docs/tree/master/nginx#using-environment-variables-in-nginx-configuration-new-in-119
ENV NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
+
+COPY .docker/web-nginx/nginx.conf /etc/nginx/templates/nginx.conf.template
+
+HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
+ CMD ["sh", "-c", "curl --fail --silent --show-error \"http://localhost${APP_BASE}/index.php\" || exit 1"]