Ultimate magazine theme for WordPress.

كيفية تشغيل NGINX Inside Docker (للتحجيم التلقائي السهل) – CloudSavvy IT

2

ads

شعار Docker

أحد أحمال العمل الأكثر شيوعًا في Docker هو استخدامه لحاوية خوادم الويب مثل NGINX و Apache لتشغيل أسطول تسليم محتوى عالي الأداء يمكن قياسه وإدارته تلقائيًا بسهولة. سنوضح لك كيفية إعداده مع NGINX.

إعداد NGINX داخل Docker

Docker عبارة عن منصة حاوية ، تُستخدم لحزم تطبيقك وكل كوداته في صورة حاوية واحدة يمكن التحكم فيها بسهولة. تشبه عملية القيام بذلك إلى حد كبير الطريقة التي ستتبعها لإعداد خادم جديد – الحاوية عبارة عن لوحة فارغة ، لذلك ستحتاج إلى تثبيت التبعيات ، وإنشاء التعليمات البرمجية الخاصة بك ، والنسخ فوق عناصر الإنشاء ، والنسخ أي تكوين. لحسن الحظ ، ليس عليك أتمتة هذا القدر. لدى NGINX بالفعل حاوية Docker متاحة للجمهور ، والتي يمكنك استخدامها كنقطة انطلاق لتطبيقك.

بالطبع ، اعتمادًا على التطبيق الذي تقوم بتخزينه في حاويات ، يمكن أن يكون هذا أكثر تعقيدًا. إذا كنت تنشر نظام إدارة محتوى مثل WordPress ، فستحتاج على الأرجح إلى قاعدة بيانات خارجية ، لأن الحاويات ليست مصممة لتكون ثابتة. مكان جيد للبدء في WordPress على وجه الخصوص هو حاوية Docker في WordPress.

لأغراض الحصول على شيء أكثر تعقيدًا من صفحة ويب بسيطة Hello World ، سننشئ دليل مشروع جديد ونهيئ تطبيق Vue.js أساسي. سيكون التكوين الخاص بك مختلفًا اعتمادًا على المحتوى الذي تخدمه ، لكن الفكرة العامة هي نفسها.

قالب المشروع

في جذر مشروعك ، قم بإنشاء ملف جديد باسم Dockerfile بدون تمديد. سيكون هذا بمثابة تكوين البناء. بشكل افتراضي ، تكون الحاوية فارغة ، وتتضمن فقط التطبيقات والتبعيات التي تأتي مثبتة مع الصورة الأساسية. ستحتاج إلى نسخ رمز التطبيق الخاص بك ؛ إذا كنت تقدم محتوى ثابتًا فقط ، فهذا سهل ، ولكن إذا كنت تعمل مع تطبيقات من جانب الخادم مثل WordPress ، فقد تحتاج إلى تثبيت تبعيات إضافية.

التكوين التالي أساسي جدًا. لأن هذا تطبيق عقدة ، نحتاج إلى تشغيل npm run build للحصول على بنية جاهزة للتوزيع. يمكننا التعامل مع هذا كله في Dockerfile ، من خلال إعداد إنشاء حاوية من جزأين:

FROM node:latest as build-stage
WORKDIR /src
COPY package*.json ./
RUN npm install
COPY ./ .
RUN npm run build

FROM nginx as production-stage
RUN mkdir /src
COPY --from=build-stage /src/dist /src
COPY nginx.conf /etc/nginx/nginx.conf

السطر الأول FROM الأمر يسحب ملف node حاوية من Docker Hub وتقوم بعمل حاوية جديدة تسمى build-stage. التالي cdإلى هذا الدليل ، ويتم نسخه عبر package.json. ثم يتم تشغيله npm install، ثم ينسخ رمز التطبيق ويبدأ عملية الإنشاء. إذا كان التطبيق الخاص بك يحتاج إلى البناء من المصدر ، فستحتاج إلى القيام بشيء مشابه لهذا.

الحالة التالية تسحب nginx الحاوية لتكون بمثابة نشر الإنتاج. يجعل src الدليل ثم نسخ ، من build-stage الحاوية /src/dist/ المجلد الذي يحتوي على عناصر البناء ، إلى ملف /src مجلد حاوية الإنتاج. ثم يتم نسخه عبر ملف تكوين NGINX.

ستحتاج أيضًا إلى إنشاء ملف جديد يسمى .dockerignore، ليقول لها أن تتجاهل node_modules بالإضافة إلى أي قطع أثرية للبناء من البنايات المحلية.

**/node_modules
**/dist

يشير Dockerfile إلى ملف nginx.conf، والتي ستحتاج أيضًا إلى إنشائها. إذا كنت تقوم بتشغيل تكوين أكثر تعقيدًا مع تكوينات متعددة بتنسيق /sites-available، قد ترغب في إنشاء مجلد جديد لتكوين NGINX الخاص بك ، ونسخه.

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
  worker_connections  1024;
}
http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /var/log/nginx/access.log  main;
  sendfile        on;
  keepalive_timeout  65;
  server {
    listen       80;
    server_name  localhost;
    location / {
      root   /src;
      index  index.html;
      try_files $uri $uri/ /index.html;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }
  }
}

هذا مجرد خادم ويب HTTP. تتمثل أبسط طريقة لإعداد HTTPS في تشغيل certbot من LetsEncrypt محليًا ، والنسخ فوق الشهادة من /etc/letsencrypt/live/example.com/fullchain.pem في حاوية الإنتاج. هذه الشهادات صالحة لمدة 90 يومًا ، لذا ستحتاج إلى تجديدها بانتظام. يمكنك أتمتة هذا كجزء من عملية بناء الحاوية.

بمجرد ترتيب كل شيء ، يمكنك تشغيل Docker build:

docker build . -t my-app

هذا سوف يبني الحاوية مثل my-app، وبعد ذلك يمكنك وضع علامة عليها وإرسالها إلى ECS أو سجل حاوية لنشرها في نهاية المطاف. يجب عليك ، أو بالطبع ، اختباره محليًا أولاً باستخدام docker run ربط localhost:8080 إلى المنفذ 80 من مثيل NGINX:

docker run -d -p 8080:80 my-app

بمجرد الحصول على صورة مدمجة ، يكون نشرها في الإنتاج أمرًا بسيطًا إلى حد ما. يمكنك قراءة دليلنا لإعداد ملف النشر التلقائي للحاويات على AWS ECS لمعرفة المزيد ، أو قراءة دليلنا على إنشاء خط أنابيب CI / CD مع حاويات للتعامل مع عمليات الإنشاء والنشر الآلية.

ads

اترك رد

لن يتم نشر عنوان بريدك الإلكتروني.