This commit is contained in:
51
docker/Dockerfile copy
Normal file
51
docker/Dockerfile copy
Normal file
@@ -0,0 +1,51 @@
|
||||
# استفاده از ایمیج پایهای که قبلاً 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"]
|
||||
Reference in New Issue
Block a user