نصب وردپرس با Docker Compose در ۲۰۲۶ (راهنمای کامل گام به گام)
در این آموزش عملی و گام به گام یاد میگیریم چگونه وردپرس را با استفاده از Docker و Docker Compose روی یک سرور لینوکسی (مثلاً Ubuntu) نصب و راهاندازی کنیم. این روش نسبت به نصب سنتی LAMP/LEMP سریعتر، قابل اطمینانتر و استانداردتر است و مناسب برای محیطهای توسعه و تولید میباشد.
📌 فهرست محتوا
- پیشنیازها
- نصب Docker و Docker Compose
- ساخت و مدیریت فایل .env
- ساخت فایل docker-compose.yml
- اجرای کانتینرها
- تکمیل نصب وردپرس
- نکات امنیتی
- سوالات متداول (FAQ)
۱. پیشنیازها
- سرور یا سیستم Ubuntu (ترجیحاً نسخههای جدیدتر)
- دسترسی به ترمینال و کاربر با مجوز
sudo - نصب Docker
- نصب Docker Compose
- دامنه معتبر به همراه رکوردهای DNS
اگر Docker یا Docker Compose را نصب نکردهاید، میتوانید از مراحل زیر استفاده کنید:
۲. نصب Docker و Docker Compose
برای نصب Docker:
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable --now dockerبرای نصب Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --versionاکنون Docker و Docker Compose روی سرور شما نصب و آماده استفاده هستند. :contentReference[oaicite:0]{index=0}
۳. ساخت فایل .env و مدیریت متغیرهای محیطی
یک فایل متنی به نام .env در پروژه ایجاد کنید تا اطلاعات حساس مانند رمز دیتابیس در آن نگهداری شود:
MYSQL_ROOT_PASSWORD=your_root_password
MYSQL_DATABASE=wordpress
MYSQL_USER=wp_user
MYSQL_PASSWORD=wp_passwordاین فایل را در .gitignore و .dockerignore قرار دهید تا اطلاعات حساس به مخزن کد منتقل نشود. :contentReference[oaicite:1]{index=1}
۴. ساخت فایل docker-compose.yml
در همان دایرکتوری یک فایل به نام docker-compose.yml ایجاد کرده و محتوای زیر را در آن قرار دهید:
version: "3.9"
services:
db:
image: mysql:5.7
container_name: wp_mysql
restart: always
env_file:
- .env
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
container_name: wp_app
depends_on:
- db
ports:
- "80:80"
restart: always
env_file:
- .env
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:این فایل شامل دو سرویس اصلی است:
- db: پایگاه داده MySQL
- wordpress: برنامه وردپرس
دادههای کانتینرها با volumes ذخیره میشوند تا هنگام حذف کانتینرها حذف نشوند. :contentReference[oaicite:2]{index=2}
۵. اجرای کانتینرها
برای ساخت و اجرای کانتینرها:
docker-compose up -dاین دستور کانتینرها را در حالت پسزمینه اجرا میکند. برای بررسی وضعیت آنها میتوانید از دستور زیر استفاده کنید:
docker-compose ps۶. تکمیل نصب وردپرس
پس از اجرای موفق کانتینرها، مرورگر خود را باز کرده و به آدرس دامنه یا IP سرورتان بروید تا مراحل گرافیکی نصب وردپرس را مشاهده کنید:
- انتخاب زبان
- تنظیم نام سایت
- ساخت حساب کاربری مدیر
- ورود به داشبورد مدیریت
نصب وردپرس مشابه نصب سنتی خواهد بود اما اکنون برنامه در کانتینرهای Docker اجرا میشود. :contentReference[oaicite:3]{index=3}
۷. نکات امنیتی و بهترین شیوهها
- اطلاعات حساس در فایل
.envنگهداری شود و به مخزن کد منتقل نشود. :contentReference[oaicite:4]{index=4} - برای محیط production از SSL و HTTPS استفاده کنید.
- در صورت نیاز، Nginx/Traefik را بهعنوان reverse-proxy برای مدیریت ترافیک و SSL تنظیم کنید. :contentReference[oaicite:5]{index=5}
- دیتابیس را در Volume جدا نگه دارید تا دادهها حفظ شوند حتی بعد از حذف کانتینرها.
۸. سوالات متداول (FAQ)
آیا با حذف کانتینرها اطلاعات سایت حذف میشود؟
خیر. اطلاعات در volumes ذخیره میشود و با حذف کانتینرها باقی میماند.
چگونه SSL را فعال کنم؟
برای SSL میتوانید از Nginx/Traefik همراه با Let’s Encrypt استفاده کنید که در ادامه آموزشهای دیگر به آن پرداخته میشود. :contentReference[oaicite:6]{index=6}
چطور از خطای اتصال به پایگاه داده جلوگیری کنم؟
اطمینان حاصل کنید متغیرهای فایل .env صحیح و کانتینر db قبل از وردپرس اجرا شده باشد. توجه کنید WORDPRESS_DB_HOST برابر db:3306 تنظیم شده باشد.
— پایان مقاله —
