این روزها داکر (Docker) به استاندارد طلایی برای ساخت، توسعه و استقرار محیطهای وب تبدیل شده است؛ چون به جای اینکه دائماً با اختلافات سیستمعامل، نسخههای مختلف نرمافزارها، تنظیمات پراکنده و وابستگیهای متناقض درگیر شوید، همه چیز را در قالب یک محیط قابلتکرار و کنترلشده آماده میکند.
در روشهای سنتی، معمولاً باید روی سیستم میزبان خود پیکربندیهای متعددی انجام دهید: از نصب و تنظیم PHP با نسخه مناسب گرفته تا راهاندازی MySQL، تنظیم وبسرور (مثل Nginx یا Apache)، مدیریت Extensionها، تنظیمات دسترسیها و حتی بررسی اینکه آیا همه اینها با هم سازگار هستند یا نه. نتیجه اغلب این است که اگر یک روز سیستمتان عوض شود یا تیمتان از سیستم دیگری کار را ادامه دهد، ممکن است همان پروژه با همان مراحل قبلی “مثل قبل” بالا نیاید و دوباره مجبور شوید ساعتها زمان بگذارید.
اما داکر رویکردی کاملاً متفاوت دارد: به شما اجازه میدهد وردپرس را داخل یک محیط ایزوله اجرا کنید؛ یعنی وردپرس، پایگاهداده (MySQL) و وبسرور هر کدام در ظرف (Container)های جداگانه با تنظیمات دقیق خودشان اجرا میشوند. این ایزولهسازی باعث میشود تداخل نسخههای PHP یا پلاگینها با سایر پروژهها به حداقل برسد و مهمتر از آن، راهاندازی اولیه به شکل “استاندارد و تکرارپذیر” انجام شود. همچنین چون محیط داکری سبک و تعریفشده است، هر کسی که تنظیمات پروژه را داشته باشد میتواند دقیقاً همان نتیجه را روی سیستم خود ببیند؛ بدون اینکه لازم باشد کل مسیر نصب و تنظیمات را از نو انجام دهد.

در این مقاله، دقیقا یاد میگیرید چطور وردپرس را با Docker Compose راهاندازی کنید؛ از آمادهسازی اولیه فایلها و تعریف سرویسها تا اجرای نخستین کانتینرها و ایجاد ارتباط بین وبسرور و دیتابیس. ما مرحلهبهمرحله جلو میرویم تا در نهایت بتوانید سایت خود را در کمتر از ۱۰ دقیقه بالا بیاورید، کاری که در حالت سنتی معمولاً زمان بیشتری میخواهد و خطای بیشتری هم دارد. علاوه بر نصب، روی نکات کلیدی هم تمرکز میکنیم؛ مثل اینکه چگونه کانتینرها را مدیریت کنید، چطور در صورت نیاز تنظیمات را تغییر دهید، یا در زمان آپدیت و عیبیابی بهجای نصب مجدد، کل محیط را دوباره از روی کانفیگ بالا بیاورید.
اگر هنوز برایتان سوال است که داکر چیست و چه کاربردهایی دارد توصیه می کنیم آموزش های قبلی را مطالعه کنید.
نکته مهم قبل از شروع: هاست اشتراکی یا سرور؟
پیش از هر چیز باید دقت داشته باشید که اجرای وردپرس با استفاده از داکر، نیازمند دسترسی کامل به خط فرمان سرور (SSH) و امکان اجرای سرویسهای پسزمینه (Background processes) است. بنابراین، این روش برای سرویسهای هاست اشتراکی (Shared Hosting) که به دلیل محدودیتهای امنیتی اجازه دسترسی مستقیم به هسته سیستمعامل و نصب داکر را نمیدهند، مناسب نیست. اگر قصد دارید وردپرس را با قدرت و انعطافپذیری داکر مدیریت کنید، حتماً باید از سرورهای مجازی (VPS)، سرورهای اختصاصی و یا سرویسهای ابری (Cloud) استفاده کنید که امکان مدیریت کامل محیط سرور را در اختیار شما قرار میدهند.
در این لینک هم می توانید راهنمای انتخاب سرور از نظر خدمات مدیریتی را مطالعه کنید.
در صورتی که قصد نصب docker در سیستم عامل ویندوز خود را دارید، میتوانید از مقاله راهنمای گام به گام نصب Docker Desktop روی ویندوز استفاده کنید.
مرحله ۱ :پیشنیازها
پیش از شروع، مطمئن شوید موارد زیر روی سیستم شما (سرور مجازی / اختصاصی / ابری) نصب شده است:
- Docker Engine: برای اجرای کانتینرها.
- Docker Compose: برای مدیریت سرویسهای چندگانه (وردپرس و دیتابیس).
به روز رسانی بسته ها:
sudo apt update && sudo apt upgrade -y
نصب پیشنیازها:
البته در سروری که این آموزش تهیه شده ، نصب پیش نیازها پیشتر انجام شده است. ولی با فرض اینکه از ابتدا به صورت بنیادین قصد راه اندازی سرویس داکر و کانتینر و…داشته باشید ضروری است طبق این آموزش پیش بروید:
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg -y
نصب داکر:
sudo apt install docker.io containerd -y
برای اطمینان از نصب :
docker --version
نصب Docker Compose:
Docker Compose یک ابزار تحت ابر است که به شما امکان میدهد برنامههای چند-کانتینری را با استفاده از یک فایل پیکربندی ساده به نام docker-compose.yml تعریف، اجرا و مدیریت کنید. به جای اینکه هر کانتینر را با دستورات طولانی docker run به صورت جداگانه راهاندازی کنید، در فایل Compose مشخص میکنید که هر سرویس (مثل وبسرور، دیتابیس، کش و …) از چه ایمیجی استفاده کند، چه پورتهایی را باز کند، چه متغیرهای محیطی نیاز دارد و چگونه با سایر سرویسها ارتباط برقرار کند.
سپس با یک دستور ساده docker compose up -d تمام کانتینرها را با هم و به ترتیب وابستگیهایشان اجرا میکند. این ابزار برای محیطهای توسعه، تست و حتی تولید بسیار مفید است زیرا باعث میشود زیرساخت برنامه به صورت کد (Infrastructure as Code) درآید، قابل نسخهبرداری باشد و اعضای تیم بتوانند با یک فایل، کل برنامه را روی سیستم خود راهاندازی کنند.
در پروژه وردپرس ما، فایل Compose دو سرویس db (MySQL) و wordpress را مدیریت میکند و با دستورات ساده میتوانید کل برنامه را شروع، متوقف یا مجدداً راهاندازی کنید.
sudo apt install docker-compose-plugin -y

برای اطمینان از نصب، نسخه را چک کنید:
docker compose version

مرحله ۲: راهاندازی وردپرس با Docker Compose
یک مسیر ویژه برای نصب وردپرس باید تعرییف کنیم. برای این منظور پوشه ای میسازید و ادامه فرایند را داخل آن پوشه انجام میدهید:
mkdir ~/wordpress-docker cd ~/wordpress-docker
مرحله ۳: ایجاد فایل تنظیمات (docker-compose.yml)
قلب تپنده این آموزش، فایل docker-compose.yml است. این فایل به داکر میگوید که باید یک کانتینر برای دیتابیس (MySQL) و یک کانتینر برای خود وردپرس بسازد.
در همان مسیر ~/wordpress-docker که در مرحله قبلی وارد شدید ، یک فایل جدید به نام docker-compose.yml بسازید و کدهای زیر را در آن قرار دهید:
version: '3.1'
services:
db:
image: mysql:5.7
container_name: wordpress_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: IRPOWER@MySQL
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: IRPOWER@Wordpress
volumes:
- db_data:/var/lib/mysql
networks:
- wordpress_network
wordpress:
depends_on:
- db
image: wordpress:latest
container_name: wordpress_app
restart: unless-stopped
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: IRPOWER@Wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
networks:
- wordpress_network
volumes:
db_data: {}
wordpress_data: {}
networks:
wordpress_network: {}
نکات مهم در فایل docker-compose.yml :
۱- حتماً رمزهای عبور را با رمزهای قوی و منحصربهفرد جایگزین کنید.
۲- از ذخیره این فایل در مخزن عمومی کد خودداری کنید .
۳-تورفتگی ها (indent) در این فایل اهمیت زیادی دارند و باید رعایت شود.
۴- برای راحتی آموزش در هر دو سرویس (db) و (wordpress) نام دیتابیس و کاربر دیتابیس و کلمه عبور یکسان تعریف شده است.
مرحله ۴: اجرا و راهاندازی کانتینرها
حالا زمان آن رسیده است که جادو اتفاق بیفتد! در همان پوشه پروژه، دستور زیر را در ترمینال اجرا کنید:
docker-compose up -d
این دستور ایمیج (Images) وردپرس و دیتابیس را از Docker Hub دانلود کرده و سرویسها را در پسزمینه (Detached mode) اجرا میکند. در ادامه ابتدا نحوه دانلود و Pulling را مشاهده می کنید و سپس اتمام کار و نمایش مشخصات ایمیج های دانلود و نصب شده.


برای اطمینان از در حال اجرا بودن کانتینرها بهتر است بعد از این مرحله یک مرتبه دستور زیر را اجرا کنیم:
docker ps

همانطور که می بینید؛ هر دو کانتینر با نام های تعریف شده ما ایجاد و در وضعیت up ( در حال اجرا) هستند.
مرحله ۵ : نهایی سازی نصب وردپرس
در این مرحله از طریق مرورگر وارد آدرس localhost:۸۰۸۰ شوید . مرورگر تشخیص میدهد که باید آدرس localhost:۸۰۸۰/wp-admin/install.php را بارگزاری کند.
نکته: اگر سرور واقعی دارید بجای localhost آیپی سرور یا نام دامنه ای که در سرور bind کرده اید را پشت پورت ۸۰۸۰ وارد کنید.

در ادامه نصب؛ کافی است نام سایت و کاربر مدیر و کلمه عبور را وارد کنید. درواقع چون مشخصات دیتابیس و کاربر دیتابیس در فایل پیکربندی (docker-compose.yml) درج شده است، یک مرحله از نصب توسط docker و در پس زمینه انجام می شود و نیازی نیست ما اطلاعات مذکور را مجددا در قالب یک صفحه گرافیکی وارد کنیم.

بعد از این مرحله وردپرس به طور کامل نصب و وارد پیشخوان وردپرس خواهید شد.
دستورات مفید برای مدیریت وردپرس:
میتوانید لاگ ها را هم به صورت مجزا ( به تفکیک هر کانتینر) و هم به صورت یکجا با دستورات زیر ببینید:
برای یک کانتینر خاص: برای نمونه ما ۲ کانتینر در این داکر نصب و فعال داریم. اولی برای وردپرس و دومی برای دیتابیس. نام این کانتینرها را از مرحله ۴ این آموزش و یا فایل docker-compose.yml میتوانید ببینید:
docker compose logs wordpress

docker compose logs db

اگر در هر مرحله ای نیاز به تغییراتی در فایل پیکربندی اصلی داکر باشد حتما بعد از اعمال تغییرات در این فایل باید کانتینرها یک مرتبه ریستارت شوند:
# کانتینرها را متوقف کنید
docker compose down -v
# دوباره اجرا کنید
docker compose up -d
اگر نیاز به حذف کامل داده ها باشد:
docker compose down -v
نکته مهم و کاربردی:
- ذخیرهسازی اطلاعات: استفاده از volumes در فایل docker-compose.yml تضمین میکند که با حذف کانتینرها، اطلاعات سایت و پایگاه داده از بین نرود . یعنی شما با ایجاد والیوم و مانت کردن آن به داده های هر کانتینر داده های خود را حفظ میکنید.( در مشکلاتی مانند حذف شدن ناگهانی کانتینر و یا حتی مهاجرت به کانتینر دیگر، آسودگی خیال دارید که دیتای شما سالم است)
- استفاده از فایل .env: برای امنیت بیشتر، میتوانید اطلاعات حساس مثل رمزهای عبور را در یک فایل .env جداگانه ذخیره کرده و در فایل docker-compose.yml از آنها ارجاع دهید . این ارجاع در قالب environment variable در این فایل استفاده می شود.
چرا استفاده از Docker برای وردپرس توصیه میشود؟
- ایزولهسازی:
با ایزولهسازی محیط اجرا، دیگر نگران تداخل نسخههای مختلف PHP یا ناسازگاری پلاگینها با تنظیمات سرور نخواهید بود. هر پروژه با وابستگیها و پیکربندیهای خودش از بقیه جدا میشود و همین موضوع باعث کاهش خطاهای ناشی از تفاوت تنظیمات یا نصبهای متفاوت میگردد.
- قابلیت حمل:
سایت شما وابسته به یک سرور خاص نیست. هر جا که Docker در دسترس باشد، میتوانید همان پروژه را دقیقاً با همان نسخهها، تنظیمات و ساختار اجرا کنید؛ یعنی توسعه روی یک سیستم انجام میشود و همان خروجی روی سیستم دیگر هم بدون تغییر رفتار میکند.
- مدیریت آسان:
مدیریت محیط به شکل ساده و قابلاتکا پیش میرود. با استفاده از دستورات معمولی مانند docker-compose down و docker-compose up میتوانید کل محیط را در چند ثانیه خاموش/روشن کنید، بازسازی انجام دهید، یا حتی هنگام آپدیت، سرویسها را دوباره با پیکربندی جدید بالا بیاورید؛ بدون اینکه لازم باشد دستی وارد تنظیمات پیچیده شوید یا مراحل نصب را دوباره از ابتدا تکرار کنید.