42 أسطر
1.7 KiB
Docker
42 أسطر
1.7 KiB
Docker
# المرحلة الأولى: اختيار صورة أساسية خفيفة تحتوي على 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" ]
|