Files
aramesh-backend/frontend/Dockerfile
T
MMD 3a7c7b0908 زیرساخت: Traefik به‌جای nginx به‌عنوان نقطه ورود واحد + سرو MinIO
- سرویس traefik:v3 روی پورت ۵۱۷۳ (پورت هاست) — تنها نقطه ورود استک:
  /       → frontend (فایل‌های استاتیک SPA)
  /api    → backend:8000
  /media  → MinIO:9000 با rewrite به باکت aramesh-media
  مسیریابی با Docker labels در docker-compose.yml
- حذف کامل nginx: Caddy فقط فایل‌های استاتیک را سرو می‌کند
  (fallback به index.html برای SPA، کش یک‌ساله immutable برای assets/)
- سرویس minio + minio-setup (ساخت خودکار باکت و دسترسی عمومی خواندن —
  یک‌بار در اولین اجرا)؛ کنسول MinIO روی پورت ۹۰۰۱
- وابستگی backend به سلامت db و minio
- vite dev: پروکسی /api و /media به Traefik برای هم‌مبدأ بودن در توسعه
2026-09-06 20:49:17 +03:30

25 lines
655 B
Docker

# ---------- مرحله ساخت ----------
FROM node:22-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
# آدرس API در زمان بیلد؛ پیش‌فرض خالی یعنی درخواست‌های نسبی (/api) که Traefik مسیریابی می‌کند
ARG VITE_API_URL=""
ENV VITE_API_URL=$VITE_API_URL
RUN npm run build
# ---------- مرحله سرو ----------
# Caddy فقط فایل‌های استاتیک SPA را سرو می‌کند؛ مسیریابی /api و /media روی Traefik است
FROM caddy:2-alpine
COPY Caddyfile /etc/caddy/Caddyfile
COPY --from=build /app/dist /srv
EXPOSE 80