first commit
هذا الالتزام موجود في:
41
Dockerfile
Normal file
41
Dockerfile
Normal file
@@ -0,0 +1,41 @@
|
||||
# المرحلة الأولى: اختيار صورة أساسية خفيفة تحتوي على Node.js
|
||||
FROM node:18-slim
|
||||
|
||||
# تحديث وتثبيت المكتبات اللازمة لتشغيل متصفح Chromium الذي يعتمد عليه Puppeteer
|
||||
# هذه الخطوة ضرورية ليعمل Puppeteer داخل Docker
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y \
|
||||
wget \
|
||||
gnupg \
|
||||
ca-certificates \
|
||||
procps \
|
||||
libxss1 \
|
||||
--no-install-recommends \
|
||||
&& wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
|
||||
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y \
|
||||
google-chrome-stable \
|
||||
--no-install-recommends \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# تحديد مجلد العمل داخل الحاوية
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# نسخ ملفات package.json و package-lock.json أولاً للاستفادة من التخزين المؤقت (caching) في Docker
|
||||
COPY package*.json ./
|
||||
|
||||
# تثبيت جميع الاعتماديات المذكورة في package.json
|
||||
RUN npm install
|
||||
|
||||
# نسخ باقي ملفات المشروع إلى مجلد العمل
|
||||
COPY . .
|
||||
|
||||
# puppeteer يحتاج إلى هذا المتغير ليجد المتصفح الذي قمنا بتثبيته
|
||||
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable
|
||||
|
||||
# فتح المنفذ (Port) الذي يعمل عليه السيرفر للسماح بالاتصال الخارجي
|
||||
EXPOSE 3000
|
||||
|
||||
# الأمر الافتراضي الذي سيتم تشغيله عند بدء تشغيل الحاوية
|
||||
CMD [ "node", "backend/index.js" ]
|
المرجع في مشكلة جديدة
حظر مستخدم