affiliate-launch-kit / Dockerfile
mohmmed5787's picture
Fix: Full Nginx config for non-root user
af68596 verified
Raw
History Blame Contribute Delete
1.45 kB
FROM node:20-slim
# 1. تثبيت المتطلبات الأساسية
RUN apt-get update && apt-get install -y postgresql postgresql-contrib redis-server supervisor nginx curl && rm -rf /var/lib/apt/lists/*
# 2. إعداد الصلاحيات لمستخدم 'node'
USER root
RUN mkdir -p /var/run/postgresql /var/log/postgresql /var/lib/postgresql /var/run/redis /var/log/nginx /var/lib/nginx
RUN chown -R node:node /var/run/postgresql /var/log/postgresql /var/lib/postgresql /var/run/redis /var/log/nginx /var/lib/nginx
# 3. تجهيز مجلدات المشروع
WORKDIR /app
COPY --chown=node:node . .
# 4. بناء الـ Backend
WORKDIR /app/backend
RUN npm install
RUN npm run build
# 5. بناء الـ Frontend
WORKDIR /app/frontend
RUN npm install
RUN npm run build
# 6. إعداد Nginx و Supervisor
# استبدال الملف الرئيسي لـ Nginx لضمان عمله كمستخدم غير جذري
COPY nginx.conf /etc/nginx/nginx.conf
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# 7. إعداد ملف التشغيل
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
RUN chown node:node /app/entrypoint.sh
# التبديل إلى المستخدم 'node'
USER node
ENV PGDATA=/home/node/pgdata
ENV PATH="/usr/lib/postgresql/17/bin:/usr/lib/postgresql/16/bin:/usr/lib/postgresql/15/bin:/home/node/.local/bin:$PATH"
EXPOSE 7860
ENTRYPOINT ["/app/entrypoint.sh"]