# ---------- فرانت‌اند فقط سرو می‌کند ---------- # بیلد روی هاست انجام می‌شود (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