{"id":1413,"date":"2025-09-13T12:39:11","date_gmt":"2025-09-13T09:39:11","guid":{"rendered":"https:\/\/mudosdigital.com\/tr\/?p=1413"},"modified":"2025-11-16T11:12:59","modified_gmt":"2025-11-16T08:12:59","slug":"wordpress-yerel-gelistirme-ortami-docker-ile-adim-adim-rehber","status":"publish","type":"post","link":"https:\/\/mudosdigital.com\/tr\/wordpress-yerel-gelistirme-ortami-docker-ile-adim-adim-rehber\/","title":{"rendered":"WordPress Yerel Geli\u015ftirme Ortam\u0131 \u2013 Docker ile Ad\u0131m Ad\u0131m Rehber"},"content":{"rendered":"\n<p>WordPress \u00fczerinde <strong>tema<\/strong> veya <strong>eklenti geli\u015ftirmek<\/strong>, projeleri yerelde test etmek ve g\u00fcvenli bir \u00e7al\u0131\u015fma ortam\u0131 olu\u015fturmak i\u00e7in Docker harika bir \u00e7\u00f6z\u00fcmd\u00fcr. Docker sayesinde t\u00fcm servisler (WordPress, veritaban\u0131, phpMyAdmin, WP-CLI) tek bir komutla aya\u011fa kalkar, proje dosyalar\u0131 ise bilgisayar\u0131ndaki klas\u00f6rle senkronize \u00e7al\u0131\u015f\u0131r. B\u00f6ylece \u00e7ekirdek dosyalara dokunmadan sadece <code>wp-content<\/code> alt\u0131nda geli\u015ftirme yapabilirsin.<\/p>\n\n\n\n<p>Bu rehberde ad\u0131m ad\u0131m bir <strong>yerel WordPress geli\u015ftirme ortam\u0131<\/strong> kuraca\u011f\u0131z. Her ad\u0131mda hem neler yapt\u0131\u011f\u0131m\u0131z\u0131 a\u00e7\u0131klayarak gerekli komutlar\u0131 payla\u015faca\u011f\u0131z.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1-1024x640.png\" alt=\"Taray\u0131c\u0131da WordPress ana sayfas\u0131 a\u00e7\u0131k. \u00dcstte \u201cFiyatbulucu\u201d ba\u015fl\u0131\u011f\u0131 yer al\u0131yor. Sayfada b\u00fcy\u00fck puntolarla \u201cYenilik ve s\u00fcrd\u00fcr\u00fclebilirli\u011fe ba\u011fl\u0131l\u0131k\u201d yaz\u0131s\u0131 ve alt\u0131nda k\u0131sa bir a\u00e7\u0131klama bulunuyor. Ortada \u201cHakk\u0131m\u0131zda\u201d d\u00fc\u011fmesi ve alt b\u00f6l\u00fcmde geni\u015f bir mimari bina g\u00f6rseli yer al\u0131yor.\" class=\"wp-image-1419\"\/ loading=\"lazy\" srcset=\"https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1-1024x640.png 1024w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1-300x188.png 300w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1-768x480.png 768w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1-1536x960.png 1536w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1-2048x1280.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-2-1024x640.png\" alt=\"Taray\u0131c\u0131da phpMyAdmin aray\u00fcz\u00fc a\u00e7\u0131k. Sol men\u00fcde information_schema ve wordpress veritabanlar\u0131 listeleniyor. Sa\u011f tarafta veritaban\u0131 sunucusu detaylar\u0131 (MariaDB 11.8.3), ba\u011flant\u0131 bilgileri, web sunucusu (Apache\/2.4.65, PHP 8.2.29) ve phpMyAdmin s\u00fcr\u00fcm\u00fc (5.2.2) g\u00f6r\u00fcn\u00fcyor.\" class=\"wp-image-1420\"\/ loading=\"lazy\" srcset=\"https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-2-1024x640.png 1024w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-2-300x188.png 300w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-2-768x480.png 768w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-2-1536x960.png 1536w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-2-2048x1280.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Gereksinimler<\/h2>\n\n\n\n<p>WordPress geli\u015ftirme ortam\u0131 olu\u015fturmaya ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131dakilerin bilgisayar\u0131n\u0131zda kurulu olmas\u0131 gerekiyor:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Docker Desktop<\/strong> (Mac\/Windows) veya <strong>Docker Engine + Docker Compose<\/strong> (Linux)<\/li>\n\n\n\n<li><strong>VS Code<\/strong> (veya tercih etti\u011fin ba\u015fka bir edit\u00f6r)<\/li>\n\n\n\n<li>Terminal (Mac\u2019te <strong>zsh\/bash<\/strong>, Windows\u2019ta <strong>PowerShell\/WSL<\/strong>)<\/li>\n<\/ul>\n\n\n\n<p>Opsiyonel ama faydal\u0131:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>VS Code eklentileri:<\/strong> <em>PHP Intelephense<\/em>, <em>PHP Debug<\/em> (Xdebug i\u00e7in), <em>Docker<\/em><\/li>\n\n\n\n<li><strong>Git<\/strong> (s\u00fcr\u00fcm kontrol\u00fc i\u00e7in)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">1. Proje klas\u00f6r\u00fcn\u00fc olu\u015fturma<\/h2>\n\n\n\n<p>\u00d6ncelikle \u00e7al\u0131\u015faca\u011f\u0131m\u0131z proje dosyalar\u0131n\u0131 d\u00fczenli tutabilmek i\u00e7in ayr\u0131 bir klas\u00f6r a\u00e7\u0131yoruz. B\u00f6ylece t\u00fcm Docker ayar dosyalar\u0131 ve WordPress i\u00e7erikleri tek bir yerde oluyor.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir fiyatbulucu-dev &amp;&amp; cd fiyatbulucu-dev\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Ortam de\u011fi\u015fkenleri (.env)<\/h2>\n\n\n\n<p>Her projede port numaralar\u0131, veritaban\u0131 kullan\u0131c\u0131 ad\u0131\/parolas\u0131 gibi bilgiler de\u011fi\u015febilir. Bunlar\u0131 <code>docker-compose.yml<\/code> i\u00e7ine yazmak yerine <code>.env<\/code> dosyas\u0131nda toplamak, hem g\u00fcvenlik hem de ta\u015f\u0131nabilirlik a\u00e7\u0131s\u0131ndan \u00e7ok daha iyi bir pratik.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WP_PORT=8080\nPMA_PORT=8081\n\nDB_NAME=wordpress\nDB_USER=wpuser\nDB_PASSWORD=secret\nDB_ROOT_PASSWORD=rootsecret\n\nWP_TABLE_PREFIX=wp_\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Docker Compose yap\u0131land\u0131rmas\u0131 (docker-compose.yml)<\/h2>\n\n\n\n<p>Docker Compose dosyas\u0131, birden fazla servisi (WordPress, MariaDB, phpMyAdmin, WP-CLI) ayn\u0131 a\u011fda \u00e7al\u0131\u015ft\u0131rmam\u0131za olanak tan\u0131r. B\u00f6ylece tek komutla t\u00fcm ortam\u0131m\u0131z aya\u011fa kalkar. Burada ayr\u0131ca <code>wp-content<\/code> klas\u00f6r\u00fcn\u00fc host makineye ba\u011flad\u0131k, yani temalar\u0131 ve eklentileri kendi bilgisayar\u0131nda geli\u015ftirebiliyorsun.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  db:\n    image: mariadb:11\n    ...\n  wordpress:\n    image: wordpress:6.6-php8.2-apache\n    ...\n  phpmyadmin:\n    image: phpmyadmin:5-apache\n    ...\n  wpcli:\n    image: wordpress:cli-php8.2\n    ...\nvolumes:\n  db_data:\n  wp_data:\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Servisleri ba\u015flatma<\/h2>\n\n\n\n<p>Art\u0131k elimizde Docker Compose tan\u0131m\u0131 oldu\u011funa g\u00f6re tek bir komutla t\u00fcm servisleri \u00e7al\u0131\u015ft\u0131rabiliyoruz. Bu komut WordPress, veritaban\u0131 ve phpMyAdmin\u2019i birlikte ba\u015flat\u0131r.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose up -d\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. \u00c7al\u0131\u015fma durumunu kontrol etme<\/h2>\n\n\n\n<p>Her \u015feyin d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 teyit etmek i\u00e7in \u00e7al\u0131\u015fan container\u2019lar\u0131 listeliyoruz. B\u00f6ylece WordPress ve di\u011fer servisler ger\u00e7ekten aktif mi g\u00f6rebiliyoruz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker ps\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"581\" src=\"https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1024x581.png\" alt=\"\" class=\"wp-image-1415\"\/ loading=\"lazy\" srcset=\"https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1024x581.png 1024w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-300x170.png 300w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-768x436.png 768w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-1536x871.png 1536w, https:\/\/mudosdigital.com\/tr\/wp-content\/uploads\/sites\/2\/2025\/09\/image-2048x1162.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Taray\u0131c\u0131dan eri\u015fim<\/h2>\n\n\n\n<p>Servisler aya\u011fa kalkt\u0131ktan sonra WordPress\u2019e ve phpMyAdmin\u2019e taray\u0131c\u0131 \u00fczerinden eri\u015febiliriz. \u0130lk seferde WordPress bize kurulum sihirbaz\u0131n\u0131 g\u00f6sterir, burada site ad\u0131n\u0131, admin kullan\u0131c\u0131 ad\u0131n\u0131 ve \u015fifresini belirleriz.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WordPress: <a href=\"http:\/\/localhost:8080\/\">http:\/\/localhost:8080<\/a><\/li>\n\n\n\n<li>phpMyAdmin: <a href=\"http:\/\/localhost:8081\/\">http:\/\/localhost:8081<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Geli\u015ftirme klas\u00f6rleri<\/h2>\n\n\n\n<p>WordPress \u00e7ekirde\u011fi Docker volume i\u00e7inde duruyor, ama <code>wp-content<\/code> klas\u00f6r\u00fcn\u00fc host makineye ba\u011flad\u0131k. Bu sayede VS Code \u00fczerinde tema ve eklenti geli\u015ftirmelerini kolayca yapabiliyoruz. B\u00f6ylece core dosyalara dokunmadan sadece ihtiyac\u0131m\u0131z olan yerde \u00e7al\u0131\u015f\u0131yoruz.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">8. WP-CLI ile y\u00f6netim<\/h2>\n\n\n\n<p>WP-CLI, WordPress\u2019i komut sat\u0131r\u0131ndan y\u00f6netmeyi sa\u011flar. \u00d6rne\u011fin tema\/eklenti kurmak, g\u00fcncelleme yapmak veya versiyon kontrol\u00fcn\u00fc g\u00f6rmek i\u00e7in kullanabiliriz. \u00d6zellikle otomasyonlarda ve h\u0131zl\u0131 testlerde \u00e7ok faydal\u0131d\u0131r.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose run --rm wpcli wp core version\ndocker compose run --rm wpcli wp plugin install query-monitor --activate\ndocker compose run --rm wpcli wp theme install twentytwentyfour --activate\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Servisleri durdurma &amp; s\u0131f\u0131rlama<\/h2>\n\n\n\n<p>\u0130\u015fimiz bitti\u011finde servisleri kapatabilir veya veritaban\u0131 dahil t\u00fcm verileri s\u0131f\u0131rlayabiliriz. Bu sayede temiz bir kurulum yapmak istedi\u011fimizde kolayca ba\u015fa d\u00f6nebiliriz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose down        # sadece container\u2019lar\u0131 kapat\u0131r\ndocker compose down -v     # container + volume + veritaban\u0131 silinir\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Loglar\u0131 izleme<\/h2>\n\n\n\n<p>Bir \u015feyler yanl\u0131\u015f gitti\u011finde en iyi yol loglara bakmakt\u0131r. \u00d6rne\u011fin WordPress beyaz ekran veriyorsa PHP hatas\u0131n\u0131 burada g\u00f6rebiliriz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose logs -f wordpress\ndocker compose logs -f db\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">11. phpMyAdmin<\/h2>\n\n\n\n<p>Veritaban\u0131na g\u00f6rsel aray\u00fczle ba\u011flanmak i\u00e7in phpMyAdmin kullan\u0131yoruz. <code>.env<\/code> dosyas\u0131nda tan\u0131mlad\u0131\u011f\u0131m\u0131z kullan\u0131c\u0131 ad\u0131 ve \u015fifreyle giri\u015f yapabiliyoruz. Bu \u00f6zellikle tablolar\u0131 elle incelemek ve SQL sorgular\u0131 denemek i\u00e7in faydal\u0131.<\/p>\n\n\n\n<p>Adres: <a href=\"http:\/\/localhost:8081\/\">http:\/\/localhost:8081<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kullan\u0131c\u0131: <code>wpuser<\/code><\/li>\n\n\n\n<li>\u015eifre: <code>secret<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Debug (Xdebug \u2013 opsiyonel)<\/h2>\n\n\n\n<p>Geli\u015ftirme s\u0131ras\u0131nda hata ay\u0131klama i\u00e7in Xdebug kullanmak isteyebiliriz. K\u00fc\u00e7\u00fck bir ayar dosyas\u0131yla Docker i\u00e7indeki PHP\u2019ye eklenir ve VS Code ile breakpoint koyarak kodu ad\u0131m ad\u0131m inceleyebiliriz.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Mail yakalama (opsiyonel)<\/h2>\n\n\n\n<p>WordPress bazen mail g\u00f6nderir (kay\u0131t, parola resetleme vb.). Geli\u015ftirme ortam\u0131nda ger\u00e7ek mail g\u00f6ndermek istemedi\u011fimiz i\u00e7in MailHog ekleyebiliriz. B\u00f6ylece g\u00f6nderilen mailleri sahte bir posta kutusunda yakalayabiliyoruz.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Kullan\u0131lan Komutlar\u0131n \u00d6zeti<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Proje ba\u015flatma: <code>mkdir fiyatbulucu-dev &amp;&amp; cd fiyatbulucu-dev<\/code><\/li>\n\n\n\n<li>Servisleri \u00e7al\u0131\u015ft\u0131rma: <code>docker compose up -d<\/code><\/li>\n\n\n\n<li>Servisleri kapatma: <code>docker compose down<\/code><\/li>\n\n\n\n<li>Veritaban\u0131 s\u0131f\u0131rlama: <code>docker compose down -v<\/code><\/li>\n\n\n\n<li>\u00c7al\u0131\u015fan container\u2019lar\u0131 g\u00f6rme: <code>docker ps<\/code><\/li>\n\n\n\n<li>Loglar\u0131 izleme: <code>docker compose logs -f wordpress<\/code><\/li>\n\n\n\n<li>WP-CLI \u00f6rnekleri: <code>docker compose run --rm wpcli wp core version docker compose run --rm wpcli wp plugin install query-monitor --activate docker compose run --rm wpcli wp theme install twentytwentyfour --activate<\/code><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>WordPress \u00fczerinde tema veya eklenti geli\u015ftirmek, projeleri yerelde test etmek ve g\u00fcvenli bir \u00e7al\u0131\u015fma ortam\u0131 olu\u015fturmak i\u00e7in Docker harika bir \u00e7\u00f6z\u00fcmd\u00fcr. Docker sayesinde t\u00fcm servisler (WordPress, veritaban\u0131, phpMyAdmin, WP-CLI) tek bir komutla aya\u011fa kalkar, proje dosyalar\u0131 ise bilgisayar\u0131ndaki klas\u00f6rle senkronize \u00e7al\u0131\u015f\u0131r. B\u00f6ylece \u00e7ekirdek dosyalara dokunmadan sadece wp-content alt\u0131nda geli\u015ftirme yapabilirsin. Bu rehberde ad\u0131m ad\u0131m bir [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-1413","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts\/1413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/comments?post=1413"}],"version-history":[{"count":8,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts\/1413\/revisions"}],"predecessor-version":[{"id":1444,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts\/1413\/revisions\/1444"}],"wp:attachment":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/media?parent=1413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/categories?post=1413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/tags?post=1413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}