تخطَّ إلى المحتوى

🚀 شرح DevOps و CI/CD

تغليف التطبيقات بحاويات (Dockerizing)

الدرس 8 من 25· ⏱ 1 دقائق قراءة

ما هو Docker؟

Docker هو منصة لتغليف التطبيقات مع تبعياتها في حاويات خفيفة وقابلة للنقل.

Dockerfile — تطبيق Node.js

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]

Dockerfile — تطبيق Python

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "app.py"]

Dockerfile — تطبيق React (مع Nginx)

FROM node:18-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

بناء الصورة وتشغيلها

# بناء الصورة
docker build -t my-app:latest .

# تشغيل الحاوية
docker run -d -p 3000:3000 my-app:latest

# عرض الحاويات العاملة
docker ps

ملف .dockerignore

node_modules
.git
.env
*.md
dist

⚠️ استخدم .dockerignore لتجنب نسخ الملفات غير الضرورية إلى الحاوية، مما يقلل حجم الصورة ويسرع البناء.

دمج Docker مع GitHub Actions

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: docker build -t my-app:latest .
      - run: docker run my-app:latest npm test

رفع الصورة إلى Docker Hub

- name: تسجيل الدخول إلى Docker Hub
  uses: docker/login-action@v3
  with:
    username: ${{ secrets.DOCKER_USERNAME }}
    password: ${{ secrets.DOCKER_PASSWORD }}

- name: بناء ورفع الصورة
  uses: docker/build-push-action@v5
  with:
    push: true
    tags: user/my-app:latest

🎯 التالي: Docker Compose للبيئات

شرح تغليف التطبيقات بحاويات (Dockerizing) — DevOps و CI/CD بالعربي
تغليف التطبيقات بحاويات (Dockerizing)DevOps و CI/CD بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟