🐳
مواقع ووردبريس Docker: ما تحتاج معرفته
تشغيل عدة مواقع ووردبريس على سيرفر واحد باستخدام Docker في 2026
دليل عملي شامل لاستضافة مواقع ووردبريس Docker متعددة مع Nginx و SSL تلقائي
محتويات المقال
إذا كنت تدير عدة مواقع ووردبريس وتبحث عن طريقة فعّالة ومنظّمة لاستضافتها جميعًا على سيرفر واحد، فإن مواقع ووردبريس Docker هي الحل الأمثل في 2026. Docker يُتيح لك عزل كل موقع في حاوية مستقلة مع قاعدة بيانات خاصة، مما يضمن أن مشكلة في موقع واحد لن تؤثر على بقية المواقع. في هذا الدليل العملي سنبني بنية كاملة لاستضافة مواقع ووردبريس Docker متعددة مع SSL تلقائي و reverse proxy.
لماذا Docker لاستضافة عدة مواقع
قبل الغوص في التفاصيل التقنية، دعنا نفهم لماذا أصبحت مواقع ووردبريس Docker الخيار المفضّل لمديري السيرفرات في 2026:
- العزل الكامل: كل موقع ووردبريس يعمل في حاوية مستقلة بإصدار PHP وقاعدة بيانات خاصة. تحديث موقع لن يؤثر على الآخرين
- سهولة النشر: إضافة موقع جديد تتم بنسخ ملف docker-compose وتعديل بضعة متغيرات فقط
- توحيد البيئة: نفس البيئة في التطوير والإنتاج، مما يُقلّل مشاكل “يعمل على جهازي”
- سهولة النسخ الاحتياطي: كل بيانات الموقع محصورة في volumes محددة يسهل نسخها
- إدارة الموارد: يمكنك تحديد حد أقصى لاستهلاك CPU و RAM لكل حاوية
- توفير التكلفة: سيرفر VPS واحد يمكنه تشغيل 5-15 موقع ووردبريس بدلاً من دفع اشتراك منفصل لكل موقع
يمكنك الاطلاع على الوثائق الرسمية لـ Docker لفهم المفاهيم الأساسية مثل الصور (Images) والحاويات (Containers) والـ Volumes.
البنية التحتية المطلوبة
لتشغيل عدة مواقع ووردبريس عبر Docker بكفاءة، تحتاج سيرفر VPS بمواصفات مناسبة. إليك التوصيات حسب عدد المواقع:
كل حاوية ووردبريس تستهلك تقريبًا 200-400 MB من RAM في حالة الخمول، وتزيد مع عدد الزوّار. حاوية MariaDB تستهلك 200-500 MB إضافية لكل قاعدة بيانات. لذلك فإن 4 GB هو الحد الأدنى العملي لتشغيل عدة مواقع عبر الحاويات.
تثبيت Docker و Docker Compose
الخطوة الأولى هي تثبيت Docker Engine و Docker Compose على سيرفر Ubuntu 24.04:
# إزالة نسخ Docker القديمة إن وُجدت
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null
# إضافة مستودع Docker الرسمي
sudo apt update
sudo apt install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# تثبيت Docker Engine و Docker Compose
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# إضافة المستخدم الحالي لمجموعة Docker
sudo usermod -aG docker $USER
newgrp docker
# التحقق من التثبيت
docker --version
docker compose version
بنية المشروع
التنظيم الجيد هو مفتاح النجاح عند إدارة عدة مواقع ووردبريس عبر الحاويات. إليك بنية المجلدات المُوصى بها:
# إنشاء بنية المجلدات
mkdir -p ~/docker-sites/{proxy,sites,backups,scripts}
# البنية النهائية:
# ~/docker-sites/
# ├── proxy/ # Nginx Reverse Proxy
# │ ├── docker-compose.yml
# │ ├── nginx.conf
# │ └── certs/ # شهادات SSL
# ├── sites/
# │ ├── site1.com/ # الموقع الأول
# │ │ ├── docker-compose.yml
# │ │ ├── .env
# │ │ └── data/
# │ │ ├── wordpress/ # ملفات ووردبريس
# │ │ └── mysql/ # بيانات MySQL
# │ ├── site2.com/ # الموقع الثاني
# │ │ ├── docker-compose.yml
# │ │ ├── .env
# │ │ └── data/
# │ └── site3.com/ # الموقع الثالث
# ├── backups/ # النسخ الاحتياطية
# └── scripts/ # سكربتات الإدارة
tree ~/docker-sites/
هذه البنية تجعل كل موقع مستقلاً تمامًا بملف docker-compose.yml خاص وبيانات منفصلة، مما يُسهّل النسخ الاحتياطي والنقل والحذف.
إعداد Nginx Reverse Proxy
Nginx Reverse Proxy هو العنصر المركزي في البنية متعددة المواقع. يستقبل جميع الطلبات على المنفذين 80 و 443 ويوجّهها للحاوية المناسبة حسب اسم النطاق. سنستخدم Nginx Proxy Manager لتسهيل الإدارة:
# إنشاء شبكة Docker مشتركة
docker network create proxy-network
# إنشاء ملف docker-compose للـ Proxy
cat > ~/docker-sites/proxy/docker-compose.yml << 'EOF'
version: "3.8"
services:
nginx-proxy:
image: nginx:alpine
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./conf.d:/etc/nginx/conf.d:ro
- ./certs:/etc/nginx/certs:ro
- ./html:/usr/share/nginx/html
networks:
- proxy-network
# أو بدلاً من ذلك، استخدم nginx-proxy التلقائي:
# jwilder/nginx-proxy مع acme-companion
networks:
proxy-network:
external: true
EOF
لنُنشئ ملف إعدادات Nginx الرئيسي:
# ملف nginx.conf الرئيسي
cat > ~/docker-sites/proxy/nginx.conf << 'NGINX'
user nginx;
worker_processes auto;
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;
# إعدادات عامة
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 64M;
# ضغط Gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml;
# تضمين إعدادات المواقع
include /etc/nginx/conf.d/*.conf;
}
NGINX
mkdir -p ~/docker-sites/proxy/{conf.d,certs,html}
إنشاء أول موقع ووردبريس
الآن نُنشئ أول موقع من مواقع ووردبريس Docker. سنبدأ بإنشاء ملف المتغيرات البيئية ثم ملف docker-compose:
# إنشاء مجلد الموقع الأول
mkdir -p ~/docker-sites/sites/site1.com/data/{wordpress,mysql}
# إنشاء ملف المتغيرات البيئية
cat > ~/docker-sites/sites/site1.com/.env << 'EOF'
# بيانات الموقع
DOMAIN=site1.com
SITE_NAME=site1
# بيانات MySQL
MYSQL_ROOT_PASSWORD=RootPass_Str0ng_2026!
MYSQL_DATABASE=wp_site1
MYSQL_USER=wp_site1_user
MYSQL_PASSWORD=WpPass_Str0ng_2026!
# إعدادات ووردبريس
WORDPRESS_TABLE_PREFIX=wp_
EOF
# إنشاء docker-compose.yml للموقع الأول
cat > ~/docker-sites/sites/site1.com/docker-compose.yml << 'EOF'
version: "3.8"
services:
wordpress:
image: wordpress:6.7-php8.3-fpm
container_name: ${SITE_NAME}-wordpress
restart: always
environment:
WORDPRESS_DB_HOST: ${SITE_NAME}-mysql:3306
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX}
volumes:
- ./data/wordpress:/var/www/html
- ./php-custom.ini:/usr/local/etc/php/conf.d/custom.ini
depends_on:
mysql:
condition: service_healthy
networks:
- internal
- proxy-network
deploy:
resources:
limits:
memory: 512M
cpus: '1.0'
mysql:
image: mariadb:11.4
container_name: ${SITE_NAME}-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- ./data/mysql:/var/lib/mysql
networks:
- internal
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
redis:
image: redis:7-alpine
container_name: ${SITE_NAME}-redis
restart: always
command: redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru
networks:
- internal
deploy:
resources:
limits:
memory: 150M
networks:
internal:
driver: bridge
proxy-network:
external: true
EOF
# إنشاء ملف إعدادات PHP المخصصة
cat > ~/docker-sites/sites/site1.com/php-custom.ini << 'EOF'
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
max_execution_time = 300
max_input_vars = 3000
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
EOF
# تشغيل الموقع الأول
cd ~/docker-sites/sites/site1.com
docker compose up -d
# التحقق من أن الحاويات تعمل
docker compose ps
الآن نُضيف إعدادات Nginx Reverse Proxy لهذا الموقع:
# إنشاء ملف إعدادات Nginx للموقع الأول
cat > ~/docker-sites/proxy/conf.d/site1.com.conf << 'NGINX'
upstream site1_wordpress {
server site1-wordpress:9000;
}
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
fastcgi_pass site1_wordpress;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* .(css|js|jpg|jpeg|png|gif|ico|svg|woff2?)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
NGINX
# إعادة تحميل Nginx
cd ~/docker-sites/proxy
docker compose restart
إضافة موقع ثاني وثالث
الجميل في بنية مواقع ووردبريس Docker هو سهولة إضافة مواقع جديدة. كل ما تحتاجه هو نسخ المجلد وتعديل المتغيرات:
#!/bin/bash
# سكربت لإضافة موقع ووردبريس جديد
# الاستخدام: ./add-site.sh site2.com
SITE_DOMAIN=$1
SITE_NAME=$(echo $SITE_DOMAIN | sed 's/./-/g')
SITES_DIR=~/docker-sites/sites
if [ -z "$SITE_DOMAIN" ]; then
echo "الاستخدام: $0 domain.com"
exit 1
fi
echo "=== إنشاء موقع جديد: $SITE_DOMAIN ==="
# إنشاء المجلدات
mkdir -p $SITES_DIR/$SITE_DOMAIN/data/{wordpress,mysql}
# توليد كلمات مرور عشوائية
ROOT_PASS=$(openssl rand -base64 24)
WP_PASS=$(openssl rand -base64 24)
# إنشاء ملف .env
cat > $SITES_DIR/$SITE_DOMAIN/.env << EOF
DOMAIN=$SITE_DOMAIN
SITE_NAME=$SITE_NAME
MYSQL_ROOT_PASSWORD=$ROOT_PASS
MYSQL_DATABASE=wp_${SITE_NAME//-/_}
MYSQL_USER=wp_${SITE_NAME//-/_}_user
MYSQL_PASSWORD=$WP_PASS
WORDPRESS_TABLE_PREFIX=wp_
EOF
# نسخ docker-compose من الموقع الأول (القالب)
cp $SITES_DIR/site1.com/docker-compose.yml $SITES_DIR/$SITE_DOMAIN/
cp $SITES_DIR/site1.com/php-custom.ini $SITES_DIR/$SITE_DOMAIN/
# تشغيل الموقع
cd $SITES_DIR/$SITE_DOMAIN
docker compose up -d
echo "=== تم إنشاء $SITE_DOMAIN بنجاح ==="
echo "أضف إعدادات Nginx في proxy/conf.d/$SITE_DOMAIN.conf"
# إضافة الموقع الثاني
chmod +x ~/docker-sites/scripts/add-site.sh
~/docker-sites/scripts/add-site.sh site2.com
~/docker-sites/scripts/add-site.sh site3.com
# التحقق من جميع الحاويات
docker ps --format "table {{.Names}}t{{.Status}}t{{.Ports}}"
بهذه الطريقة يمكنك إضافة أي عدد من مواقع ووردبريس Docker بأمر واحد. كل موقع معزول تمامًا بقاعدة بيانات وملفات مستقلة.
إعداد SSL تلقائي مع Let's Encrypt
لتأمين المواقع بشهادات SSL تلقائية، سنستخدم Certbot في حاوية منفصلة أو نُدمجه مع Nginx Proxy. الطريقة الأسهل هي استخدام acme-companion مع nginx-proxy:
# تعديل docker-compose للـ Proxy ليدعم SSL التلقائي
cat > ~/docker-sites/proxy/docker-compose.yml << 'EOF'
version: "3.8"
services:
nginx-proxy:
image: nginxproxy/nginx-proxy:1.5
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- certs:/etc/nginx/certs:ro
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- ./custom.conf:/etc/nginx/conf.d/custom.conf:ro
networks:
- proxy-network
acme-companion:
image: nginxproxy/acme-companion:2.4
container_name: acme-companion
restart: always
environment:
DEFAULT_EMAIL: [email protected]
NGINX_PROXY_CONTAINER: nginx-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- certs:/etc/nginx/certs:rw
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- acme:/etc/acme.sh
depends_on:
- nginx-proxy
networks:
- proxy-network
volumes:
certs:
vhost:
html:
acme:
networks:
proxy-network:
external: true
EOF
الآن نُعدّل ملفات docker-compose للمواقع لتدعم SSL التلقائي. كل ما نحتاجه هو إضافة متغيرات بيئية:
# أضف هذه المتغيرات البيئية لحاوية ووردبريس في كل موقع
# environment:
# VIRTUAL_HOST: site1.com,www.site1.com
# LETSENCRYPT_HOST: site1.com,www.site1.com
# LETSENCRYPT_EMAIL: [email protected]
# مثال: تعديل docker-compose.yml للموقع الأول
# في قسم services > wordpress > environment أضف:
# VIRTUAL_HOST: ${DOMAIN},www.${DOMAIN}
# LETSENCRYPT_HOST: ${DOMAIN},www.${DOMAIN}
# LETSENCRYPT_EMAIL: admin@${DOMAIN}
# إعادة تشغيل كل شيء
cd ~/docker-sites/proxy && docker compose up -d
cd ~/docker-sites/sites/site1.com && docker compose up -d
# التحقق من إصدار الشهادات
docker logs acme-companion 2>&1 | tail -20
acme-companion سيكتشف تلقائيًا الحاويات التي تحتوي على متغيرات LETSENCRYPT_HOST ويُصدر ويُجدد شهادات SSL لها بدون أي تدخل منك.
النسخ الاحتياطي التلقائي
النسخ الاحتياطي ضروري لحماية مواقع ووردبريس Docker من فقدان البيانات. إليك سكربت شامل للنسخ الاحتياطي:
#!/bin/bash
# ~/docker-sites/scripts/backup-all.sh
# نسخ احتياطي لجميع مواقع ووردبريس Docker
SITES_DIR=~/docker-sites/sites
BACKUP_DIR=~/docker-sites/backups
DATE=$(date +%Y%m%d_%H%M)
KEEP_DAYS=7
echo "[$DATE] بدء النسخ الاحتياطي لجميع المواقع..."
for SITE_DIR in $SITES_DIR/*/; do
SITE_NAME=$(basename $SITE_DIR)
SITE_BACKUP="$BACKUP_DIR/$SITE_NAME"
mkdir -p "$SITE_BACKUP"
echo " → نسخ $SITE_NAME..."
# قراءة متغيرات البيئة
source "$SITE_DIR/.env"
# نسخ قاعدة البيانات
CONTAINER="${SITE_NAME//./-}-mysql"
docker exec $CONTAINER mysqldump -u root -p"$MYSQL_ROOT_PASSWORD"
"$MYSQL_DATABASE" 2>/dev/null | gzip > "$SITE_BACKUP/db_${DATE}.sql.gz"
# نسخ ملفات ووردبريس
tar -czf "$SITE_BACKUP/files_${DATE}.tar.gz"
-C "$SITE_DIR/data/wordpress" . 2>/dev/null
# نسخ ملفات الإعداد
cp "$SITE_DIR/.env" "$SITE_BACKUP/env_${DATE}.bak"
cp "$SITE_DIR/docker-compose.yml" "$SITE_BACKUP/compose_${DATE}.bak"
echo " ✓ $SITE_NAME - تم النسخ"
done
# حذف النسخ القديمة
find $BACKUP_DIR -type f -mtime +$KEEP_DAYS -delete
# عرض حجم النسخ
echo ""
echo "=== حجم النسخ الاحتياطية ==="
du -sh $BACKUP_DIR/*/
echo ""
echo "[$DATE] اكتمل النسخ الاحتياطي بنجاح"
# جعل السكربت قابلاً للتنفيذ وجدولته
chmod +x ~/docker-sites/scripts/backup-all.sh
# جدولة النسخ الاحتياطي يوميًا الساعة 4 فجرًا
(crontab -l 2>/dev/null; echo "0 4 * * * ~/docker-sites/scripts/backup-all.sh >> ~/docker-sites/backups/backup.log 2>&1") | crontab -
مراقبة الحاويات
مراقبة صحة الحاويات أمر ضروري لاكتشاف المشاكل مبكرًا. إليك أدوات وأوامر مفيدة:
# عرض حالة جميع الحاويات
docker ps --format "table {{.Names}}t{{.Status}}t{{.Size}}"
# عرض استهلاك الموارد لكل حاوية (مثل top)
docker stats --no-stream --format "table {{.Name}}t{{.CPUPerc}}t{{.MemUsage}}t{{.NetIO}}"
# عرض سجلات حاوية معينة
docker logs site1-wordpress --tail 50 -f
# فحص صحة حاوية MySQL
docker exec site1-mysql mysqladmin -u root -p'PASSWORD' ping
# فحص مساحة Docker
docker system df
لمراقبة متقدمة، يمكنك إضافة حاوية cAdvisor أو Portainer:
# إضافة Portainer لإدارة ومراقبة Docker بواجهة رسومية
docker run -d
--name portainer
--restart always
-p 9443:9443
-v /var/run/docker.sock:/var/run/docker.sock
-v portainer_data:/data
portainer/portainer-ce:latest
# الوصول إلى Portainer: https://YOUR_IP:9443
#!/bin/bash
# سكربت مراقبة سريع - ~/docker-sites/scripts/health-check.sh
echo "=== فحص صحة المواقع ==="
echo "التاريخ: $(date)"
echo ""
# فحص كل حاوية
for container in $(docker ps --format '{{.Names}}' | grep wordpress); do
DOMAIN=$(echo $container | sed 's/-wordpress//' | sed 's/-/./g')
STATUS=$(docker inspect --format='{{.State.Health.Status}}' $container 2>/dev/null || echo "no-healthcheck")
HTTP_CODE=$(curl -sI -o /dev/null -w "%{http_code}" --max-time 5 http://$DOMAIN 2>/dev/null || echo "000")
if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "301" ] || [ "$HTTP_CODE" = "302" ]; then
echo " ✓ $DOMAIN - HTTP $HTTP_CODE - Container: $STATUS"
else
echo " ✗ $DOMAIN - HTTP $HTTP_CODE - Container: $STATUS [تحتاج مراجعة!]"
fi
done
echo ""
echo "=== استهلاك الموارد ==="
docker stats --no-stream --format " {{.Name}}: CPU {{.CPUPerc}} | RAM {{.MemUsage}}" | grep -E "wordpress|mysql"
تحسين الأداء
لتحقيق أفضل أداء من مواقع ووردبريس Docker، هناك عدة تحسينات يمكنك تطبيقها:
تحسين MariaDB
# إنشاء ملف إعدادات مخصص لـ MariaDB
cat > ~/docker-sites/sites/site1.com/my-custom.cnf << 'EOF'
[mysqld]
# ذاكرة InnoDB
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
# كاش الاستعلامات
query_cache_type = 1
query_cache_size = 32M
query_cache_limit = 2M
# اتصالات
max_connections = 50
wait_timeout = 300
interactive_timeout = 300
# أداء
tmp_table_size = 64M
max_heap_table_size = 64M
table_open_cache = 400
EOF
# أضف هذا في docker-compose.yml تحت volumes لحاوية mysql:
# - ./my-custom.cnf:/etc/mysql/conf.d/custom.cnf:ro
تفعيل FastCGI Cache في Nginx
# إعدادات FastCGI Cache للـ Nginx Proxy
# أضف في ملف custom.conf:
cat > ~/docker-sites/proxy/custom.conf << 'NGINX'
# تعريف منطقة الكاش
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
# حجم البيانات المُحمّلة
client_max_body_size 64M;
# ضغط Brotli (إذا متوفر)
# brotli on;
# brotli_types text/plain text/css application/json application/javascript;
NGINX
يمكنك أيضًا تثبيت إضافة Redis Object Cache في كل موقع ووردبريس للاستفادة من حاوية Redis التي أعددناها سابقًا. هذا يُقلّل استعلامات قاعدة البيانات بشكل كبير ويُسرّع أداء مواقع ووردبريس Docker بشكل ملحوظ. راجع صفحة WordPress على Docker Hub لمعرفة جميع التخصيصات المتاحة.
الخلاصة
تشغيل مواقع ووردبريس Docker على سيرفر واحد هو حل قوي وعملي يجمع بين الكفاءة والأمان والمرونة. من خلال هذا الدليل تعلّمت كيفية بناء بنية كاملة تشمل Nginx Reverse Proxy وشهادات SSL تلقائية ونسخ احتياطي ومراقبة.
المفتاح هو التنظيم الجيد منذ البداية: بنية مجلدات واضحة، ملفات .env منفصلة لكل موقع، وسكربتات أتمتة للمهام المتكررة. مع مواقع ووردبريس Docker يمكنك إدارة 10 مواقع أو أكثر بنفس الجهد المطلوب لإدارة موقع واحد. كل ما تحتاجه هو سيرفر VPS بمواصفات مناسبة وصلاحيات root لتثبيت Docker.
سيرفرات VPS بصلاحيات root لتشغيل Docker من مرام هوست
احصل على سيرفر VPS بمعالجات حديثة وأقراص NVMe فائقة السرعة مع صلاحيات root كاملة لتثبيت Docker وتشغيل مواقع ووردبريس Docker متعددة. دعم فني متخصص على مدار الساعة. ابدأ من هنا.
الأسئلة الشائعة
كم موقع ووردبريس يمكنني تشغيله على سيرفر واحد بـ Docker؟
يعتمد ذلك على مواصفات السيرفر وحجم الزيارات. كقاعدة عامة، سيرفر بـ 4 GB RAM يمكنه تشغيل 3-5 مواقع ووردبريس Docker متوسطة الحجم. مع 8 GB RAM يمكنك تشغيل 8-10 مواقع. المفتاح هو مراقبة استهلاك الموارد وترقية السيرفر عند الحاجة.
هل Docker يُبطئ أداء ووردبريس مقارنة بالتثبيت التقليدي؟
لا، Docker يضيف overhead ضئيل جدًا (أقل من 2%) مقارنة بالتثبيت المباشر على نظام التشغيل. في الواقع، مع إعدادات الكاش المناسبة (Redis + FastCGI Cache)، مواقع ووردبريس Docker قد تكون أسرع من التثبيت التقليدي لأن كل مكوّن محسّن بشكل مستقل.
كيف أُحدّث ووردبريس في حاويات Docker؟
يمكنك تحديث ووردبريس بطريقتين: من لوحة تحكم ووردبريس كالمعتاد (التحديثات الصغيرة)، أو بتحديث صورة Docker نفسها للتحديثات الكبرى. لتحديث الصورة: عدّل إصدار الصورة في docker-compose.yml ثم نفّذ docker compose pull && docker compose up -d. تأكد من أخذ نسخة احتياطية قبل أي تحديث.
ماذا يحدث إذا توقفت حاوية واحدة؟
بفضل إعداد restart: always في docker-compose، إذا توقفت حاوية لأي سبب فإن Docker سيُعيد تشغيلها تلقائيًا. الحاويات الأخرى لن تتأثر لأن كل موقع معزول. يمكنك أيضًا إعداد تنبيهات عبر البريد عند توقف أي حاوية باستخدام سكربت المراقبة الذي شرحناه سابقًا.