51 lines
1.8 KiB
Plaintext
51 lines
1.8 KiB
Plaintext
# استفاده از ایمیج پایهای که قبلاً Push کردید
|
||
ARG BASE_IMAGE=hub.peikarband.ir/peikarband/landing:base
|
||
FROM ${BASE_IMAGE} AS builder
|
||
|
||
WORKDIR /app
|
||
|
||
# ۱. کپی کردن فایلهای نیازمندی (برای استفاده از Cache)
|
||
COPY peikarband/requirements.txt .
|
||
RUN --mount=type=cache,target=/root/.cache/pip \
|
||
pip install --no-cache-dir -r requirements.txt
|
||
|
||
# ۲. کپی کردن کل کدها
|
||
# مهم: ساختار فولدر باید با app_name در rxconfig.py یکی باشد
|
||
COPY peikarband/ .
|
||
|
||
# ۳. تنظیم PYTHONPATH برای حل مشکل ModuleNotFoundError
|
||
ENV PYTHONPATH=/app
|
||
|
||
# ۴. اجرای Reflex Export
|
||
# این دستور خودش فرانتتند را بیلد میکند و نیازی به npm run build دستی نیست
|
||
RUN reflex init --loglevel debug
|
||
RUN reflex export --frontend-only --no-zip --loglevel debug
|
||
|
||
# ================= Stage 2: Runtime =================
|
||
FROM ${BASE_IMAGE} AS runtime
|
||
|
||
# ایجاد یوزر غیر ریشه برای امنیت
|
||
RUN groupadd -r peikarband && useradd -r -g peikarband -u 1000 -m peikarband
|
||
WORKDIR /app
|
||
|
||
# کپی کردن کتابخانههای نصب شده از مرحله قبل
|
||
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
|
||
COPY --from=builder /usr/local/bin /usr/local/bin
|
||
|
||
# کپی کردن کد اپلیکیشن و فایلهای بیلد شده فرانتتند
|
||
COPY --from=builder --chown=peikarband:peikarband /app /app
|
||
|
||
# ایجاد پوشههای مورد نیاز
|
||
RUN mkdir -p data logs uploaded_files && \
|
||
chown -R peikarband:peikarband /app && \
|
||
chmod -R 755 /app
|
||
|
||
ENV PYTHONUNBUFFERED=1 \
|
||
PYTHONPATH=/app \
|
||
NODE_ENV=production
|
||
|
||
USER peikarband
|
||
EXPOSE 3000 8000
|
||
|
||
ENTRYPOINT ["/usr/bin/tini", "--"]
|
||
CMD ["reflex", "run", "--env", "prod"] |