آموزش نصب وردپرس روی Docker برای محیط توسعه
آیا از دردسرهای تنظیم محیط توسعه محلی برای وردپرس خسته شدهاید؟ هر بار که پروژهای جدید شروع میکنید، سر و کله زدن با PHP، MySQL و Apache یا Nginx میتواند زمانبر و گیجکننده باشد.
خبر خوب این است که با داکر (Docker)، این چالشها به گذشته میپیوندند!
در این مقاله جامع، به شما نشان میدهیم چگونه وردپرس را به سادگی و کارآمدی روی Docker برای محیط توسعه خود نصب کنید.
این روش نه تنها سرعت را به ارمغان میآورد، بلکه پایداری و ایزولهسازی پروژههای شما را تضمین میکند و تجربهای حرفهای در توسعه سفارشی وردپرس فراهم میآورد.
با این راهنما، میتوانید تمرکز خود را بر روی کدنویسی و ایجاد ارزش قرار دهید، نه پیکربندی بیپایان.
چرا وردپرس روی Docker؟ یک نگاه سریع به مزایا

🚀
سرعت و سادگی
راهاندازی وردپرس در چند دقیقه، بدون تنظیمات پیچیده.
🔒
ایزولهسازی کامل
هر پروژه در محیط خود، بدون تداخل با سایر برنامهها.
🔄
قابلیت حمل
محیط توسعه شما هر جا که Docker باشد، قابل اجراست.
نقشه راه: نصب وردپرس روی داکر برای محیط توسعه

1️⃣
پیشنیازها
نصب Docker و Docker Compose.
2️⃣
ایجاد ساختار پروژه
فایل Docker Compose و پوشههای لازم.
3️⃣
پیکربندی Docker Compose
تنظیم سرویسهای وردپرس، MySQL و PhpMyAdmin.
4️⃣
راهاندازی و تست
اجرای کانتینرها و نصب وردپرس.
5️⃣
عیبیابی رایج
حل مشکلات احتمالی.
گام اول: آمادهسازی پیشنیازها برای نصب وردپرس روی Docker
قبل از اینکه وارد دنیای جذاب داکر و وردپرس شوید، باید مطمئن شوید که ابزارهای لازم را روی سیستم خود نصب کردهاید.
داکر یک پلتفرم فوقالعاده است که به شما امکان میدهد برنامهها را در کانتینرهای ایزوله اجرا کنید.
داکر کامپوز (Docker Compose) نیز ابزاری برای تعریف و اجرای برنامههای چند کانتینری داکر است.
این دو ابزار، پایه و اساس کار ما برای نصب وردپرس روی داکر خواهند بود.
1.1. نصب Docker Desktop
Docker Desktop یک پکیج جامع برای ویندوز، مک و لینوکس است که شامل داکر انجین، داکر کامپوز، Kubernetes و دیگر ابزارهای مفید میشود.
این راحتترین راه برای شروع کار با داکر است.
-
برای ویندوز: به وبسایت رسمی Docker مراجعه کرده و Docker Desktop for Windows را دانلود کنید.
نصب آن کاملاً گرافیکی و مانند هر برنامه ویندوز دیگری است. -
برای macOS: Docker Desktop for Mac را از وبسایت Docker دریافت کنید.
پس از دانلود فایل .dmg، آن را باز کرده و Docker را به پوشه Applications خود بکشید. -
برای لینوکس: بسته به توزیع لینوکس خود (Ubuntu, Debian, Fedora, CentOS)، دستورالعملهای نصب را از مستندات رسمی Docker دنبال کنید.
معمولاً شامل افزودن مخازن داکر و نصب از طریق مدیریت بسته است.
پس از نصب، داکر دسکتاپ را اجرا کنید و منتظر بمانید تا آیکون داکر در نوار وظیفه یا منوی سیستم شما سبز شود، که نشاندهنده آماده به کار بودن آن است.
1.2. بررسی نصب Docker Compose
در نسخههای جدید Docker Desktop، داکر کامپوز به صورت پیشفرض همراه با داکر نصب میشود.
برای اطمینان از صحت نصب، یک ترمینال یا Command Prompt را باز کرده و دستورات زیر را اجرا کنید:
docker --versiondocker compose version
اگر نسخههای Docker و Docker Compose نمایش داده شد، همه چیز آماده است! در غیر این صورت، به مستندات داکر برای نصب دستی داکر کامپوز مراجعه کنید.
این مرحله بسیار حیاتی است زیرا بدون Docker Compose نمیتوانید به راحتی سرویسهای چندگانه وردپرس (وبسرور، دیتابیس) را مدیریت کنید.
گام دوم: ایجاد ساختار پروژه و فایل Docker Compose
حالا که پیشنیازها آماده است، زمان آن رسیده که ساختار پروژه خود را برای وردپرس در داکر ایجاد کنیم.
این ساختار شامل یک پوشه اصلی برای پروژه و فایل docker-compose.yml است که تمامی سرویسهای مورد نیاز وردپرس را تعریف میکند.
2.1. ایجاد پوشه پروژه
یک پوشه جدید برای پروژه وردپرس خود ایجاد کنید. میتوانید نام آن را هر چیزی که دوست دارید بگذارید، مثلاً my-wordpress-project.
mkdir my-wordpress-projectcd my-wordpress-project
2.2. ایجاد فایل docker-compose.yml
در داخل پوشه my-wordpress-project، یک فایل با نام docker-compose.yml ایجاد کنید.
این فایل مغز متفکر راهاندازی وردپرس روی داکر است و تمامی سرویسها و ارتباطات آنها را مشخص میکند.
محتوای فایل docker-compose.yml باید دقیقاً مانند کد زیر باشد.
لطفاً به تورفتگیها (indentation) دقت کنید، زیرا در فایلهای YAML بسیار مهم هستند.
version: '3.8'services:wordpress:image: wordpress:latestports:- "8000:80"environment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpressvolumes:- ./wp-content:/var/www/html/wp-contentrestart: alwaysdepends_on:- dbdb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: rootpasswordMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpressvolumes:- db_data:/var/lib/mysqlrestart: alwaysphpmyadmin:image: phpmyadmin/phpmyadminports:- "8080:80"environment:PMA_HOST: dbMYSQL_ROOT_PASSWORD: rootpasswordrestart: alwaysdepends_on:- dbvolumes:db_data:
توضیح فایل docker-compose.yml:
-
`wordpress` سرویس:
image: wordpress:latest: جدیدترین ایمیج وردپرس را از Docker Hub میگیرد.ports: "8000:80": پورت 8000 سیستم شما را به پورت 80 کانتینر وردپرس نگاشت میکند. شما میتوانید این پورت را تغییر دهید.environment: متغیرهای محیطی برای اتصال وردپرس به دیتابیس.volumes: ./wp-content:/var/www/html/wp-content: این خط بسیار مهم است!
این یک Volume Mapping ایجاد میکند. به این معنی که پوشهwp-contentدر دایرکتوری فعلی پروژه شما (همان جایی کهdocker-compose.ymlقرار دارد) به پوشه/var/www/html/wp-contentداخل کانتینر وردپرس متصل میشود.
این کار باعث میشود هر گونه تغییر در پلاگینها، پوستهها و فایلهای آپلودی شما (که درwp-contentقرار دارند) حتی پس از حذف یا بازسازی کانتینر، حفظ شوند.
بدون این، با هر بار راهاندازی مجدد کانتینر، تمام کارهای شما از بین میرفت.نکته مهم: اطمینان حاصل کنید که پوشه
wp-contentدر کنار فایلdocker-compose.ymlوجود دارد یا پس از اولین اجرا داکر آن را ایجاد خواهد کرد.depends_on: db: این سرویس بهdb(دیتابیس) وابسته است و تا زمانی که دیتابیس آماده نشود، راهاندازی نمیشود.
-
`db` سرویس (MySQL):
image: mysql:8.0: ایمیج MySQL نسخه 8 را دریافت میکند.environment: متغیرهای محیطی برای پیکربندی دیتابیس (نام کاربری، رمز عبور، نام دیتابیس).volumes: db_data:/var/lib/mysql: این یک Named Volume است که دادههای دیتابیس را روی سیستم هاست شما ذخیره میکند.
این تضمین میکند که دادههای دیتابیس شما حتی پس از حذف یا بازسازی کانتینرdbنیز حفظ میشوند.
-
`phpmyadmin` سرویس:
image: phpmyadmin/phpmyadmin: ایمیج PhpMyAdmin را برای مدیریت گرافیکی دیتابیس فراهم میکند.ports: "8080:80": PhpMyAdmin روی پورت 8080 سیستم شما قابل دسترسی خواهد بود.PMA_HOST: db: PhpMyAdmin را به سرویس دیتابیس (که نام آن در داکر کامپوزdbاست) متصل میکند.
-
`volumes` بخش:
db_data:: یک Named Volume به نامdb_dataتعریف میکند تا داکر آن را مدیریت کند.
چرا Volume Mapping و Named Volume؟
استفاده از Volume Mapping (./wp-content) و Named Volume (db_data) در نصب وردپرس روی داکر، اهمیت حیاتی دارد.
کانتینرها ذاتاً فرار (ephemeral) هستند؛ یعنی دادههای داخل آنها پس از حذف کانتینر از بین میروند.
با استفاده از Volumeها، ما دادههای مهم وردپرس (مانند پوستهها، پلاگینها و آپلودها) و دادههای دیتابیس را در خارج از کانتینر ذخیره میکنیم، جایی که ایمن هستند.
این عمل به شما این امکان را میدهد که با خیال راحت کانتینرها را حذف یا بازسازی کنید، بدون نگرانی از دست دادن اطلاعات ارزشمندتان.
این روش بهینهای برای مدیریت پایداری دادهها در محیط توسعه وردپرس با داکر است.
گام سوم: راهاندازی وردپرس با Docker Compose
حالا که فایل docker-compose.yml را آماده کردهاید، زمان آن است که وردپرس خود را با چند دستور ساده بالا بیاورید.
این فرآیند کانتینرهای لازم را ساخته و راهاندازی میکند، از جمله وردپرس، MySQL و PhpMyAdmin.
3.1. اجرای کانتینرها
ترمینال یا Command Prompt خود را باز کرده و به پوشه پروژه my-wordpress-project بروید (همان جایی که فایل docker-compose.yml را ایجاد کردید).
سپس دستور زیر را اجرا کنید:
docker compose up -d
-
`docker compose up`: این دستور تمامی سرویسهای تعریف شده در فایل
docker-compose.ymlرا میسازد و راهاندازی میکند. -
`-d` (detached mode): این گزینه باعث میشود کانتینرها در پسزمینه اجرا شوند و ترمینال شما آزاد بماند.
اگر میخواهید لاگهای کانتینرها را در ترمینال ببینید، میتوانید-dرا حذف کنید.
در اولین اجرا، داکر ایمیجهای وردپرس، MySQL و PhpMyAdmin را دانلود میکند که ممکن است کمی زمان ببرد.
پس از اتمام، کانتینرهای شما اجرا خواهند شد.
میتوانید با دستور زیر از وضعیت کانتینرها مطلع شوید:
docker compose ps
این دستور لیستی از کانتینرهای در حال اجرا را نمایش میدهد.
اگر همه کانتینرها وضعیت Up (به همراه زمان اجرا) را نشان دهند، به این معنی است که همه چیز به درستی کار میکند.
3.2. تکمیل نصب وردپرس
حالا که کانتینر وردپرس در حال اجراست، میتوانید نصب نهایی وردپرس را از طریق مرورگر وب انجام دهید.
-
یک مرورگر وب باز کنید و به آدرس
http://localhost:8000بروید. -
صفحه خوشآمدگویی وردپرس را مشاهده خواهید کرد.
زبان مورد نظر خود را انتخاب کرده و روی “ادامه” کلیک کنید. -
در صفحه بعدی، اطلاعات مورد نیاز سایت وردپرسی خود را وارد کنید:
- عنوان سایت: نام سایت شما (مثلاً “My Docker WordPress”).
- نام کاربری: نام کاربری ادمین (مثلاً “admin”).
- رمز عبور: یک رمز عبور قوی انتخاب کنید.
- ایمیل شما: ایمیل مدیر سایت.
- قابلیت دیده شدن توسط موتورهای جستجو: برای محیط توسعه، بهتر است این گزینه را فعال کنید تا سایت شما توسط رباتهای موتورهای جستجو (مثل گوگل) ایندکس نشود.
البته برای سایتهای لایو باید این گزینع خاموش باشد.
برای اطلاعات بیشتر در مورد اهمیت این موارد در سئو، میتوانید به مقالات ما در دسته سئو مراجعه کنید.
- پس از پر کردن اطلاعات، روی دکمه “نصب وردپرس” کلیک کنید.
-
تبریک! وردپرس شما با موفقیت روی داکر نصب شد.
حالا میتوانید با کلیک بر روی “ورود” به داشبورد مدیریت وردپرس خود وارد شوید.
3.3. دسترسی به PhpMyAdmin
همانطور که در فایل docker-compose.yml تنظیم کردیم، PhpMyAdmin نیز برای مدیریت دیتابیس در دسترس است.
میتوانید با مراجعه به آدرس http://localhost:8080 به آن دسترسی پیدا کنید.
-
نام کاربری:
root -
رمز عبور:
rootpassword(همان رمزی که درMYSQL_ROOT_PASSWORDدر فایلdocker-compose.ymlتعریف کردیم).
PhpMyAdmin ابزاری عالی برای بررسی ساختار دیتابیس وردپرس، اجرای کوئریها و مدیریت دادهها در محیط توسعه است.
گام چهارم: مدیریت پروژه وردپرس در داکر
بعد از نصب وردپرس روی داکر، دانستن نحوه مدیریت کانتینرها برای یک تجربه توسعه روان ضروری است.
این شامل راهاندازی مجدد، توقف و حذف کانتینرها میشود.
4.1. توقف کانتینرها
وقتی کارتان با پروژه وردپرس تمام شد، میتوانید کانتینرها را متوقف کنید.
این کار باعث آزاد شدن منابع سیستم میشود.
دقت کنید که این کار کانتینرها را حذف نمیکند، بلکه فقط آنها را متوقف میسازد.
docker compose stop
4.2. راهاندازی مجدد کانتینرها
برای راهاندازی مجدد کانتینرهای متوقف شده، کافیست دوباره دستور docker compose up -d را اجرا کنید.
اگر تغییراتی در فایل docker-compose.yml ایجاد کردهاید، بهتر است از دستور زیر استفاده کنید تا تغییرات اعمال شوند:
docker compose up -d --build
گزینه --build باعث میشود که ایمیجهای سرویسها دوباره ساخته شوند (در صورتی که تغییراتی در Dockerfile یا کانفیگ مربوطه ایجاد کرده باشید).
4.3. حذف کانتینرها و شبکهها
اگر میخواهید پروژه وردپرس خود را به طور کامل از داکر حذف کنید (مثلاً برای شروع یک پروژه جدید یا پاکسازی سیستم)، میتوانید از دستور زیر استفاده کنید:
docker compose down
این دستور کانتینرها، شبکهها و ولومهای تعریف شده در فایل docker-compose.yml را حذف میکند.
اخطار: با این دستور، دادههای دیتابیس (که در db_data ذخیره شدهاند) نیز حذف خواهند شد.
اگر میخواهید دادههای دیتابیس را حفض کنید، باید از docker compose down --remove-orphans بدون حذف ولومها استفاده کنید.
برای حذف کانتینرها بدون حذف ولومها:
docker compose down --volumes
نکته مهم: این دستور ولومهای Named Volume را حذف میکند.
پوشه wp-content که به صورت Path Volume نگاشت شده، روی سیستم شما باقی میماند.
گام پنجم: عیبیابی مشکلات رایج در نصب وردپرس روی Docker
مانند هر فرآیند توسعهای، ممکن است در راهاندازی وردپرس با داکر با مشکلاتی مواجه شوید.
در این بخش به برخی از رایجترین مسائل و راهحلهای آنها میپردازیم.
شناخت این مشکلات به شما کمک میکند تا به سرعت از آنها عبور کرده و فرآیند توسعه خود را ادامه دهید.
5.1. مشکل در دسترسی به پورتها (Port Conflicts)
یکی از رایجترین مشکلات، تداخل پورتها است.
اگر برنامههای دیگری روی سیستم شما (مانند Apache، Nginx یا حتی سرویسهای دیگر داکر) از پورتهای 8000 یا 8080 استفاده میکنند، کانتینرهای وردپرس یا PhpMyAdmin نمیتوانند راهاندازی شوند.
راهحل:
-
تغییر پورت در
docker-compose.yml:
سادهترین راهحل، تغییر پورتهای میزبانی (سمت چپ:) در فایلdocker-compose.ymlاست.
مثلاً برای وردپرس میتوانید"8001:80"و برای PhpMyAdmin"8081:80"را تنظیم کنید.
سپسdocker compose up -d --buildرا اجرا کنید. -
پیدا کردن برنامه در حال استفاده از پورت:
در ویندوز میتوانید ازnetstat -ano | findstr :8000و در لینوکس/مک ازlsof -i :8000برای شناسایی فرآیندهای درگیر استفاده کنید.
5.2. خطای اتصال به دیتابیس (Error Establishing a Database Connection)
این خطای رایج وردپرس معمولاً به معنای این است که کانتینر وردپرس نمیتواند به کانتینر MySQL متصل شود.
راهحل:
-
بررسی لاگهای کانتینر MySQL:
با دستورdocker compose logs dbلاگهای سرویس دیتابیس را بررسی کنید.
ممکن است مشکل از رمز عبور اشتباه، نام دیتابیس یا کاربر باشد. -
اطمینان از تطابق متغیرهای محیطی:
مطمئن شوید که متغیرهایWORDPRESS_DB_USER،WORDPRESS_DB_PASSWORDوWORDPRESS_DB_NAMEدر سرویس وردپرس، دقیقاً باMYSQL_USER،MYSQL_PASSWORDوMYSQL_DATABASEدر سرویسdbمطابقت دارند. -
بررسی
WORDPRESS_DB_HOST:
این مقدار بایدdbباشد، زیرا نام سرویس دیتابیس در فایلdocker-compose.yml،dbاست.
5.3. مشکلات در Volume Mapping
اگر پلاگینها، پوستهها یا فایلهای آپلودی شما پس از راهاندازی مجدد کانتینرها از بین میروند، احتمالاً مشکل از Volume Mapping است.
راهحل:
-
بررسی مسیرها:
مطمئن شوید که مسیر نسبی./wp-contentدر فایلdocker-compose.yml، به درستی به پوشهwp-contentدر همان دایرکتوریdocker-compose.ymlاشاره میکند. -
Permissions (مجوزها):
گاهی اوقات مشکلات مجوز دسترسی به فایلها میتواند مانع از نوشتن وردپرس در پوشهwp-contentشود.
اگر از لینوکس یا مک استفاده میکنید، ممکن است نیاز باشد مجوزهای پوشهwp-contentرا تنظیم کنید (مثلاً باsudo chown -R $USER:$USER wp-content).
مقایسه: Docker با روشهای سنتی نصب وردپرس
| ویژگی | Docker |
|---|---|
| زمان راهاندازی | فوری (پس از اولین دانلود ایمیجها) |
| ایزولهسازی پروژهها | کامل و بدون تداخل |
| قابلیت حمل (Portability) | بسیار بالا، محیط یکسان روی هر سیستمی |
| مدیریت وابستگیها | آسان و متمرکز در یک فایل |
| بهروزرسانی و نگهداری | ساده با کشیدن ایمیجهای جدید |
این جدول به خوبی نشان میدهد که چرا نصب وردپرس روی Docker یک انتخاب بینظیر برای توسعهدهندگان مدرن است.
با داکر، شما از دنیای پیچیده مدیریت سرور محلی رها میشوید و به یک محیط توسعه سریعتر، پایدارتر و با قابلیت اشتراکگذاری بالا دست پیدا میکنید.
این رویکرد نه تنها زمان شما را صرفهجویی میکند، بلکه کیفیت کار شما را نیز ارتقا میبخشد.
سوالات متداول (FAQ) در مورد نصب وردپرس روی Docker
1. آیا میتوانم از این تنظیمات داکر برای محیط تولید (Production) نیز استفاده کنم؟
خیر، این تنظیمات برای محیط توسعه طراحی شدهاند.
برای محیط تولید، نیاز به تنظیمات امنیتی بیشتر، بهینهسازی عملکرد، و مدیریت پیشرفتهتر داکر (مانند Docker Swarm یا Kubernetes) دارید.
همچنین، برای تولید، معمولاً از وبسرورهای پرقدرتتری مانند Nginx به جای Apache پیشفرض در ایمیج وردپرس استفاده میشود.
2. چگونه میتوانم یک نسخه وردپرس خاص را نصب کنم؟
به جای wordpress:latest در فایل docker-compose.yml، میتوانید نسخه مورد نظر خود را مشخص کنید، مثلاً wordpress:6.4-php8.2-apache.
برای مشاهده تمامی تگهای موجود، میتوانید به صفحه رسمی وردپرس در Docker Hub مراجعه کنید.
3. اگر بخواهم از Nginx به جای Apache استفاده کنم، چه کاری باید انجام دهم؟
برای استفاده از Nginx، نیاز دارید که ایمیج وردپرس را به نسخهای که با FPM (FastCGI Process Manager) همراه است تغییر دهید، مثلاً wordpress:php8.2-fpm.
سپس یک سرویس Nginx جداگانه در فایل docker-compose.yml تعریف کنید و آن را به سرویس FPM وردپرس متصل کنید.
این کار شامل تنظیم فایل پیکربندی Nginx برای پروکسی کردن درخواستها به کانتینر وردپرس FPM میشود.
این تنظیمات پیچیدهتر است و فراتر از دامنه این آموزش مقدماتی برای نصب وردپرس روی داکر است.
4. چگونه میتوانم دادههای دیتابیس را بکآپ بگیرم؟
میتوانید با استفاده از PhpMyAdmin (در دسترس در http://localhost:8080) از دیتابیس خود خروجی (Export) بگیرید.
روش دیگر، استفاده از دستور mysqldump درون کانتینر MySQL است.
برای این کار ابتدا وارد کانتینر MySQL شوید:
docker compose exec db bash
سپس دستور mysqldump را اجرا کنید:
mysqldump -u wordpress -pwordpress wordpress > /path/to/backup.sql
(رمز عبور و نام دیتابیس را متناسب با تنظیمات خود تغییر دهید)
5. آیا میتوانم چندین پروژه وردپرس را همزمان روی داکر داشته باشم؟
بله، این یکی از بزرگترین مزایای داکر است!
برای هر پروژه وردپرس جدید، کافیست یک پوشه جداگانه ایجاد کنید، فایل docker-compose.yml مخصوص آن پروژه را بسازید، و مطمئن شوید که پورتهای نگاشت شده (مثلاً 8000 و 8080) با پروژههای دیگر تداخل نداشته باشند.
به این ترتیب، هر پروژه وردپرس کاملاً ایزوله و مستقل از دیگری عمل خواهد کرد.
نتیجهگیری: قدرت و انعطافپذیری نصب وردپرس روی Docker
در این مقاله، ما به صورت گام به گام نصب وردپرس روی Docker برای محیط توسعه را با تمامی جزئیات و نکات کلیدی بررسی کردیم.
از آمادهسازی پیشنیازها گرفته تا پیکربندی فایل docker-compose.yml و در نهایت راهاندازی و مدیریت کانتینرها، تلاش شد تا یک راهنمای کامل و قابل اعتماد ارائه شود.
استفاده از داکر نه تنها فرآیند توسعه وردپرس را سادهتر و سریعتر میکند، بلکه با فراهم آوردن محیطهای ایزوله، قابلیت حمل بالا و مدیریت آسان وابستگیها، کیفیت کار شما را به طور چشمگیری افزایش میدهد.
این روش به شما کمک میکند تا روی خلاقیت و توسعه قابلیتهای سایت خود تمرکز کنید، بدون اینکه نگران پیچیدگیهای پیکربندی زیرساخت باشید.
امیدواریم این راهنما به شما در تسلط بر این ابزار قدرتمند یاری رسانده باشد و بتوانید با اطمینان خاطر از آن در پروژههای آینده خود استفاده کنید.