Files
nginx/CHANGELOG.md
Michael Czechowski 9cfd4163f6
All checks were successful
Build and publish / build (push) Successful in 20s
feat(nginx): bake default white-label routing config, closes #1 (#2)
## Summary

- Add `nginx.conf.template` with full routing: admin/CMS surfaces → `cms:5555`, uploads → `cms:5555` (cached), `/api` → `shop:9999` (no cache), `/` → `shop:9999` (cached)
- Update `docker-entrypoint.sh` to render template via `envsubst` at startup; skip if adapter has already mounted its own config
- Update `Dockerfile` to `COPY nginx.conf.template` into image
- Bump CHANGELOG to v0.1.1

## Test plan

- [ ] Build image locally: `docker build -t libreshop/nginx:test libreshop/nginx/`
- [ ] Smoke test white-label default: no env overrides → confirm rendered `/etc/nginx/nginx.conf` contains `cms:5555` and `shop:9999`
- [ ] Smoke test env override: `NGINX_UPSTREAM_SHOP=shop:8080` → confirm substitution
- [ ] Smoke test adapter override: mount custom `nginx.conf` via compose `configs:` → confirm "adapter-provided nginx.conf detected" log line
- [ ] Deploy libreshop/demo with `nginx:v0.1.1` → confirm `/admin` returns 200

Closes #1

Co-authored-by: Michael Czechowski <michael.c@re-cinq.com>
Reviewed-on: #2
2026-04-29 19:38:52 +02:00

1.3 KiB

Changelog

All notable changes to libreshop/nginx are documented here.

v0.1.1 (Unreleased)

Added

  • Default white-label nginx.conf baked into the image. Routes the standard libreshop surface out of the box: /admin, /upload, /content-manager, /content-type-builder, /i18n, /email, /user-permissions, /users-permissions, /documentation, /plugins, /uploads${NGINX_UPSTREAM_CMS:-cms:5555}; /api and /${NGINX_UPSTREAM_SHOP:-shop:9999}. Cache zones, X-Forwarded headers, and a /health endpoint included.
  • docker-entrypoint.sh envsubst pass over nginx.conf.template at startup with NGINX_UPSTREAM_SHOP, NGINX_UPSTREAM_CMS, NGINX_CACHE_LIFETIME (default 1h).
  • Adapter-override detection: if /etc/nginx/nginx.conf was replaced via compose configs: (i.e. doesn't carry the stock nginx worker_processes auto; line), the entrypoint leaves it untouched.

Why

libreshop/demo standalone preview returned 404 on /admin because the image had no default routing. Adapters like mp work fine because they mount their own nginx.conf, but the toolkit must be runnable without an adapter.

Unreleased

  • Extracted from mp/nginx/ (2026-04-29). The component history before the extraction lives in the muellerprints repository.