- traefik pin v3.3 -> v3.6: v3.3's old docker client fails against
Engine 29 socket proxy (empty daemon errors, no routers)
- backend/minio/chatbot/umami: traefik.docker.network hint — Traefik
picked the internal-network IP for multi-network services and replies
were hairpin-dropped (all backend routes hung)
- db-init: psql needs an explicit -d arameshplaza (no default db 'aramesh'),
set -e so failures actually fail; one-shot folded-YAML needs semicolons
- chatbot image: drop g++ (apt unreachable in build network; all wheels
prebuilt) and mkdir /data before chown (VOLUME does not create it)
- frontend image: create caddy user (alpine image has none) with writable
/config and /data
- monitoring: blackbox probes replace raw metric scrapes of JSON/HTML
health endpoints (they reported 'down' while healthy); blackbox joins
edge; SITE_URL passed via env (Prometheus has no ${VAR:-default}
expansion); ContainerMemoryNearLimit PromQL fixed (comparison inside
label braces); HostDiskAlmostFull filters WSL/Docker-Desktop
pseudo-mounts
- alertmanager: config rendered by stack.sh (no env expansion in AM) and
delivered to Bale (tapi.bale.ai); stack.sh monitoring command
- machine-local override: minio console/API moved to 29001/29000
21 lines
906 B
Docker
21 lines
906 B
Docker
# ---------- فرانتاند فقط سرو میکند ----------
|
|
# بیلد روی هاست انجام میشود (npm install && npm run build) و خروجی dist/
|
|
# داخل ایمیج کپی میشود — شبکه کانتینر بیلد برای npm قابلاعتماد نیست.
|
|
|
|
FROM caddy:2-alpine
|
|
|
|
# نسخهٔ alpine کاربر caddy ندارد — اینجا ساخته میشود؛ /config و /data مسیرهای
|
|
# storage سیدی هستند و باید برای کاربر نوشتنی باشند
|
|
RUN addgroup -S caddy \
|
|
&& adduser -S -G caddy -s /sbin/nologin caddy \
|
|
&& mkdir -p /config /data \
|
|
&& chown -R caddy:caddy /config /data
|
|
|
|
COPY Caddyfile /etc/caddy/Caddyfile
|
|
COPY --chown=caddy:caddy dist /srv
|
|
|
|
# بدون root — فقط فایلهای استاتیک سرو میشوند و TLS را Traefik تمام میکند
|
|
USER caddy
|
|
|
|
EXPOSE 80
|