<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wp-cli docker Archives - WP-CLI Mastery</title>
	<atom:link href="https://wpclimastery.com/blog/tag/wp-cli-docker/feed/" rel="self" type="application/rss+xml" />
	<link>https://wpclimastery.com/blog/tag/wp-cli-docker/</link>
	<description>Automate WordPress Like a DevOps Pro.</description>
	<lastBuildDate>Mon, 24 Nov 2025 11:16:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://wpclimastery.com/wp-content/uploads/2025/11/cropped-favicon-32x32.webp</url>
	<title>wp-cli docker Archives - WP-CLI Mastery</title>
	<link>https://wpclimastery.com/blog/tag/wp-cli-docker/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress Development with Docker and WP-CLI: Complete Setup Guide</title>
		<link>https://wpclimastery.com/blog/wordpress-development-with-docker-and-wp-cli-complete-setup-guide/</link>
		
		<dc:creator><![CDATA[Krasen]]></dc:creator>
		<pubDate>Thu, 25 Dec 2025 09:00:00 +0000</pubDate>
				<category><![CDATA[WordPress DevOps]]></category>
		<category><![CDATA[containerized wordpress]]></category>
		<category><![CDATA[docker compose wordpress]]></category>
		<category><![CDATA[docker wordpress]]></category>
		<category><![CDATA[wordpress development environment]]></category>
		<category><![CDATA[wp-cli docker]]></category>
		<guid isPermaLink="false">https://wpclimastery.com/?p=140</guid>

					<description><![CDATA[<p>Setting up local WordPress environments manually wastes hours—installing PHP, MySQL, configuring virtual hosts, managing multiple versions. Every project needs different configurations, and your local machine becomes cluttered with conflicting dependencies....</p>
<p>The post <a href="https://wpclimastery.com/blog/wordpress-development-with-docker-and-wp-cli-complete-setup-guide/">WordPress Development with Docker and WP-CLI: Complete Setup Guide</a> appeared first on <a href="https://wpclimastery.com">WP-CLI Mastery</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Setting up local WordPress environments manually wastes hours—installing PHP, MySQL, configuring virtual hosts, managing multiple versions. Every project needs different configurations, and your local machine becomes cluttered with conflicting dependencies.</p>



<p>Docker + WP-CLI creates isolated, reproducible WordPress environments in minutes. Spin up fresh WordPress installs with one command, test on multiple PHP versions simultaneously, and share identical environments with your entire team.</p>



<p>In this guide, you’ll learn to build production-ready WordPress development environments using Docker and WP-CLI, with automated setup scripts and best practices used by modern WordPress development teams.</p>



<h3 class="wp-block-heading" id="why-docker">Why Docker for WordPress Development?</h3>



<p><a href="https://www.docker.com/">Docker containers</a> provide isolated, consistent environments for WordPress development without polluting your local system.</p>



<h4 class="wp-block-heading" id="problems-with-traditional-local-wordpress">Problems with Traditional Local WordPress</h4>



<p><strong>Version conflicts</strong>: Multiple PHP versions cause headaches and break projects.</p>



<p><strong>Configuration drift</strong>: Development doesn’t match staging or production environments.</p>



<p><strong>Slow setup</strong>: Installing WordPress manually on each project wastes 30-60 minutes.</p>



<p><strong>Team inconsistency</strong>: Developers have different local setups causing “works on my machine” bugs.</p>



<p><strong>Resource waste</strong>: Running multiple databases and servers consumes system resources.</p>



<h4 class="wp-block-heading" id="docker-wp-cli-advantages">Docker + WP-CLI Advantages</h4>



<p><strong>Isolated environments</strong>: Each project runs independently without conflicts.</p>



<p><strong>Instant setup</strong>: Launch complete WordPress stack in under 2 minutes.</p>



<p><strong>Version flexibility</strong>: Test on PHP 7.4, 8.0, 8.1 simultaneously.</p>



<p><strong>Team consistency</strong>: Everyone runs identical environments via docker-compose.yml.</p>



<p><strong>Easy cleanup</strong>: Delete containers without leaving system residue.</p>



<p>According to <a href="https://www.docker.com/">Docker adoption surveys</a>, 65% of professional WordPress developers use Docker for local development.</p>



<h3 class="wp-block-heading" id="docker-setup">Docker WordPress Setup</h3>



<p>Create a complete WordPress development environment with Docker Compose.</p>



<h4 class="wp-block-heading" id="basic-docker-compose.yml">Basic docker-compose.yml</h4>



<div class="sourceCode" id="cb1">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true"></a><span class="fu">version</span><span class="kw">:</span><span class="at"> </span><span class="st">"3.8"</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true"></a></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true"></a><span class="fu">services</span><span class="kw">:</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true"></a><span class="at">  </span><span class="fu">wordpress</span><span class="kw">:</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> wordpress:latest</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true"></a><span class="at">    </span><span class="fu">ports</span><span class="kw">:</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> </span><span class="st">"8080:80"</span></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true"></a><span class="at">    </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_HOST</span><span class="kw">:</span><span class="at"> db</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_USER</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_PASSWORD</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_NAME</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true"></a><span class="at">    </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> ./wordpress:/var/www/html</span></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true"></a><span class="at">    </span><span class="fu">depends_on</span><span class="kw">:</span></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> db</span></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true"></a></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true"></a><span class="at">  </span><span class="fu">db</span><span class="kw">:</span></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> mysql:8.0</span></span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true"></a><span class="at">    </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true"></a><span class="at">      </span><span class="fu">MYSQL_DATABASE</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true"></a><span class="at">      </span><span class="fu">MYSQL_USER</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true"></a><span class="at">      </span><span class="fu">MYSQL_PASSWORD</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true"></a><span class="at">      </span><span class="fu">MYSQL_ROOT_PASSWORD</span><span class="kw">:</span><span class="at"> rootpassword</span></span>
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true"></a><span class="at">    </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> db_data:/var/lib/mysql</span></span>
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true"></a></span>
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true"></a><span class="at">  </span><span class="fu">wpcli</span><span class="kw">:</span></span>
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> wordpress:cli</span></span>
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true"></a><span class="at">    </span><span class="fu">user</span><span class="kw">:</span><span class="at"> </span><span class="st">"33:33"</span></span>
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true"></a><span class="at">    </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> ./wordpress:/var/www/html</span></span>
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true"></a><span class="at">    </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_HOST</span><span class="kw">:</span><span class="at"> db</span></span>
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_USER</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_PASSWORD</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_NAME</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true"></a><span class="at">    </span><span class="fu">depends_on</span><span class="kw">:</span></span>
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> db</span></span>
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> wordpress</span></span>
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true"></a></span>
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true"></a><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb1-43"><a href="#cb1-43" aria-hidden="true"></a><span class="at">  </span><span class="fu">db_data</span><span class="kw">:</span></span></code></pre>
</div>



<h4 class="wp-block-heading" id="launch-environment">Launch Environment</h4>



<div class="sourceCode" id="cb2">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true"></a><span class="co"># Start all services</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true"></a><span class="ex">docker-compose</span> up -d</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true"></a></span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true"></a><span class="co"># Check status</span></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true"></a><span class="ex">docker-compose</span> ps</span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true"></a></span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true"></a><span class="co"># Access WordPress</span></span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true"></a><span class="ex">open</span> http://localhost:8080</span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true"></a></span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true"></a><span class="co"># View logs</span></span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true"></a><span class="ex">docker-compose</span> logs -f wordpress</span></code></pre>
</div>



<h4 class="wp-block-heading" id="run-wp-cli-in-container">Run WP-CLI in Container</h4>



<div class="sourceCode" id="cb3">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true"></a><span class="co"># Execute WP-CLI commands</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp --info</span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true"></a></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true"></a><span class="co"># Install WordPress core</span></span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp core install <span class="kw">\</span></span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true"></a>    <span class="ex">--url</span>=localhost:8080 <span class="kw">\</span></span>
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true"></a>    <span class="ex">--title</span>=<span class="st">"Docker WordPress"</span> <span class="kw">\</span></span>
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true"></a>    <span class="ex">--admin_user</span>=admin <span class="kw">\</span></span>
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true"></a>    <span class="ex">--admin_password</span>=admin <span class="kw">\</span></span>
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true"></a>    <span class="ex">--admin_email</span>=admin@example.com</span>
<span id="cb3-11"><a href="#cb3-11" aria-hidden="true"></a></span>
<span id="cb3-12"><a href="#cb3-12" aria-hidden="true"></a><span class="co"># Install plugins</span></span>
<span id="cb3-13"><a href="#cb3-13" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp plugin install contact-form-7 --activate</span></code></pre>
</div>



<p>Learn more about <a href="https://docs.docker.com/compose/">Docker Compose</a> configuration.</p>



<h3 class="wp-block-heading" id="advanced-config">Advanced Docker Configuration</h3>



<p>Enhance your Docker WordPress environment with professional features.</p>



<h4 class="wp-block-heading" id="multiple-php-versions">Multiple PHP Versions</h4>



<div class="sourceCode" id="cb4">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true"></a><span class="co"># docker-compose.yml with PHP version control</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true"></a><span class="fu">version</span><span class="kw">:</span><span class="at"> </span><span class="st">"3.8"</span></span>
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true"></a></span>
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true"></a><span class="fu">services</span><span class="kw">:</span></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true"></a><span class="at">  </span><span class="fu">wordpress-php74</span><span class="kw">:</span></span>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> wordpress:php7.4-apache</span></span>
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true"></a><span class="at">    </span><span class="fu">ports</span><span class="kw">:</span></span>
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> </span><span class="st">"8074:80"</span></span>
<span id="cb4-9"><a href="#cb4-9" aria-hidden="true"></a><span class="at">    </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb4-10"><a href="#cb4-10" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_HOST</span><span class="kw">:</span><span class="at"> db</span></span>
<span id="cb4-11"><a href="#cb4-11" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_NAME</span><span class="kw">:</span><span class="at"> wp_php74</span></span>
<span id="cb4-12"><a href="#cb4-12" aria-hidden="true"></a><span class="at">    </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb4-13"><a href="#cb4-13" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> ./wp-php74:/var/www/html</span></span>
<span id="cb4-14"><a href="#cb4-14" aria-hidden="true"></a></span>
<span id="cb4-15"><a href="#cb4-15" aria-hidden="true"></a><span class="at">  </span><span class="fu">wordpress-php80</span><span class="kw">:</span></span>
<span id="cb4-16"><a href="#cb4-16" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> wordpress:php8.0-apache</span></span>
<span id="cb4-17"><a href="#cb4-17" aria-hidden="true"></a><span class="at">    </span><span class="fu">ports</span><span class="kw">:</span></span>
<span id="cb4-18"><a href="#cb4-18" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> </span><span class="st">"8080:80"</span></span>
<span id="cb4-19"><a href="#cb4-19" aria-hidden="true"></a><span class="at">    </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb4-20"><a href="#cb4-20" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_HOST</span><span class="kw">:</span><span class="at"> db</span></span>
<span id="cb4-21"><a href="#cb4-21" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_NAME</span><span class="kw">:</span><span class="at"> wp_php80</span></span>
<span id="cb4-22"><a href="#cb4-22" aria-hidden="true"></a><span class="at">    </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb4-23"><a href="#cb4-23" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> ./wp-php80:/var/www/html</span></span>
<span id="cb4-24"><a href="#cb4-24" aria-hidden="true"></a></span>
<span id="cb4-25"><a href="#cb4-25" aria-hidden="true"></a><span class="at">  </span><span class="fu">wordpress-php81</span><span class="kw">:</span></span>
<span id="cb4-26"><a href="#cb4-26" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> wordpress:php8.1-apache</span></span>
<span id="cb4-27"><a href="#cb4-27" aria-hidden="true"></a><span class="at">    </span><span class="fu">ports</span><span class="kw">:</span></span>
<span id="cb4-28"><a href="#cb4-28" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> </span><span class="st">"8081:80"</span></span>
<span id="cb4-29"><a href="#cb4-29" aria-hidden="true"></a><span class="at">    </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb4-30"><a href="#cb4-30" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_HOST</span><span class="kw">:</span><span class="at"> db</span></span>
<span id="cb4-31"><a href="#cb4-31" aria-hidden="true"></a><span class="at">      </span><span class="fu">WORDPRESS_DB_NAME</span><span class="kw">:</span><span class="at"> wp_php81</span></span>
<span id="cb4-32"><a href="#cb4-32" aria-hidden="true"></a><span class="at">    </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb4-33"><a href="#cb4-33" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> ./wp-php81:/var/www/html</span></span></code></pre>
</div>



<p><strong>Use Case</strong>: Test plugin compatibility across PHP versions simultaneously.</p>



<h4 class="wp-block-heading" id="custom-php-configuration">Custom PHP Configuration</h4>



<div class="sourceCode" id="cb5">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="co"># docker-compose.yml with custom PHP settings</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true"></a><span class="fu">services</span><span class="kw">:</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true"></a><span class="at">  </span><span class="fu">wordpress</span><span class="kw">:</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> wordpress:latest</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true"></a><span class="at">    </span><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> ./wordpress:/var/www/html</span></span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> ./php.ini:/usr/local/etc/php/conf.d/custom.ini</span></span></code></pre>
</div>



<p><strong>php.ini</strong>:</p>



<div class="sourceCode" id="cb6">
<pre class="sourceCode ini"><code class="sourceCode ini"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true"></a><span class="dt">upload_max_filesize </span><span class="ot">=</span><span class="st"> 64M</span></span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true"></a><span class="dt">post_max_size </span><span class="ot">=</span><span class="st"> 64M</span></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true"></a><span class="dt">memory_limit </span><span class="ot">=</span><span class="st"> 256M</span></span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true"></a><span class="dt">max_execution_time </span><span class="ot">=</span><span class="st"> </span><span class="dv">300</span></span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true"></a><span class="dt">display_errors </span><span class="ot">=</span><span class="st"> </span><span class="kw">On</span></span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true"></a><span class="dt">error_reporting </span><span class="ot">=</span><span class="st"> </span><span class="kw">E_ALL</span></span></code></pre>
</div>



<h4 class="wp-block-heading" id="add-phpmyadmin">Add PHPMyAdmin</h4>



<div class="sourceCode" id="cb7">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true"></a><span class="fu">services</span><span class="kw">:</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true"></a><span class="at">  </span><span class="fu">phpmyadmin</span><span class="kw">:</span></span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> phpmyadmin:latest</span></span>
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true"></a><span class="at">    </span><span class="fu">ports</span><span class="kw">:</span></span>
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> </span><span class="st">"8081:80"</span></span>
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true"></a><span class="at">    </span><span class="fu">environment</span><span class="kw">:</span></span>
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true"></a><span class="at">      </span><span class="fu">PMA_HOST</span><span class="kw">:</span><span class="at"> db</span></span>
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true"></a><span class="at">      </span><span class="fu">PMA_USER</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb7-9"><a href="#cb7-9" aria-hidden="true"></a><span class="at">      </span><span class="fu">PMA_PASSWORD</span><span class="kw">:</span><span class="at"> wordpress</span></span>
<span id="cb7-10"><a href="#cb7-10" aria-hidden="true"></a><span class="at">    </span><span class="fu">depends_on</span><span class="kw">:</span></span>
<span id="cb7-11"><a href="#cb7-11" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> db</span></span></code></pre>
</div>



<p>Access PHPMyAdmin at <code>http://localhost:8081</code>.</p>



<h3 class="wp-block-heading" id="automated-setup">Automated WordPress Setup</h3>



<p>Create scripts for one-command WordPress environment initialization.</p>



<h4 class="wp-block-heading" id="complete-setup-script">Complete Setup Script</h4>



<div class="sourceCode" id="cb8">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true"></a><span class="co">#!/bin/bash</span></span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true"></a><span class="co"># wp-docker-init.sh - Initialize WordPress Docker environment</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true"></a></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true"></a><span class="kw">set</span> <span class="ex">-e</span></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true"></a></span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true"></a><span class="va">PROJECT_NAME=</span><span class="st">"</span><span class="va">${1:-</span>wordpress-project<span class="va">}</span><span class="st">"</span></span>
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true"></a><span class="va">ADMIN_USER=</span><span class="st">"admin"</span></span>
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true"></a><span class="va">ADMIN_PASS=</span><span class="st">"admin"</span></span>
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true"></a><span class="va">ADMIN_EMAIL=</span><span class="st">"admin@example.com"</span></span>
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true"></a></span>
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Initializing WordPress Docker environment: </span><span class="va">$PROJECT_NAME</span><span class="st">"</span></span>
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true"></a></span>
<span id="cb8-13"><a href="#cb8-13" aria-hidden="true"></a><span class="co"># Create project directory</span></span>
<span id="cb8-14"><a href="#cb8-14" aria-hidden="true"></a><span class="fu">mkdir</span> -p <span class="st">"</span><span class="va">$PROJECT_NAME</span><span class="st">"</span></span>
<span id="cb8-15"><a href="#cb8-15" aria-hidden="true"></a><span class="bu">cd</span> <span class="st">"</span><span class="va">$PROJECT_NAME</span><span class="st">"</span></span>
<span id="cb8-16"><a href="#cb8-16" aria-hidden="true"></a></span>
<span id="cb8-17"><a href="#cb8-17" aria-hidden="true"></a><span class="co"># Create docker-compose.yml</span></span>
<span id="cb8-18"><a href="#cb8-18" aria-hidden="true"></a><span class="fu">cat</span> <span class="op">&gt;</span> docker-compose.yml <span class="op">&lt;&lt;'EOF'</span></span>
<span id="cb8-19"><a href="#cb8-19" aria-hidden="true"></a>version: '3.8'</span>
<span id="cb8-20"><a href="#cb8-20" aria-hidden="true"></a>services:</span>
<span id="cb8-21"><a href="#cb8-21" aria-hidden="true"></a>  wordpress:</span>
<span id="cb8-22"><a href="#cb8-22" aria-hidden="true"></a>    image: wordpress:latest</span>
<span id="cb8-23"><a href="#cb8-23" aria-hidden="true"></a>    ports:</span>
<span id="cb8-24"><a href="#cb8-24" aria-hidden="true"></a>      - "8080:80"</span>
<span id="cb8-25"><a href="#cb8-25" aria-hidden="true"></a>    environment:</span>
<span id="cb8-26"><a href="#cb8-26" aria-hidden="true"></a>      WORDPRESS_DB_HOST: db</span>
<span id="cb8-27"><a href="#cb8-27" aria-hidden="true"></a>      WORDPRESS_DB_USER: wordpress</span>
<span id="cb8-28"><a href="#cb8-28" aria-hidden="true"></a>      WORDPRESS_DB_PASSWORD: wordpress</span>
<span id="cb8-29"><a href="#cb8-29" aria-hidden="true"></a>      WORDPRESS_DB_NAME: wordpress</span>
<span id="cb8-30"><a href="#cb8-30" aria-hidden="true"></a>    volumes:</span>
<span id="cb8-31"><a href="#cb8-31" aria-hidden="true"></a>      - ./wordpress:/var/www/html</span>
<span id="cb8-32"><a href="#cb8-32" aria-hidden="true"></a>    depends_on:</span>
<span id="cb8-33"><a href="#cb8-33" aria-hidden="true"></a>      - db</span>
<span id="cb8-34"><a href="#cb8-34" aria-hidden="true"></a></span>
<span id="cb8-35"><a href="#cb8-35" aria-hidden="true"></a>  db:</span>
<span id="cb8-36"><a href="#cb8-36" aria-hidden="true"></a>    image: mysql:8.0</span>
<span id="cb8-37"><a href="#cb8-37" aria-hidden="true"></a>    environment:</span>
<span id="cb8-38"><a href="#cb8-38" aria-hidden="true"></a>      MYSQL_DATABASE: wordpress</span>
<span id="cb8-39"><a href="#cb8-39" aria-hidden="true"></a>      MYSQL_USER: wordpress</span>
<span id="cb8-40"><a href="#cb8-40" aria-hidden="true"></a>      MYSQL_PASSWORD: wordpress</span>
<span id="cb8-41"><a href="#cb8-41" aria-hidden="true"></a>      MYSQL_ROOT_PASSWORD: rootpassword</span>
<span id="cb8-42"><a href="#cb8-42" aria-hidden="true"></a>    volumes:</span>
<span id="cb8-43"><a href="#cb8-43" aria-hidden="true"></a>      - db_data:/var/lib/mysql</span>
<span id="cb8-44"><a href="#cb8-44" aria-hidden="true"></a></span>
<span id="cb8-45"><a href="#cb8-45" aria-hidden="true"></a>  wpcli:</span>
<span id="cb8-46"><a href="#cb8-46" aria-hidden="true"></a>    image: wordpress:cli</span>
<span id="cb8-47"><a href="#cb8-47" aria-hidden="true"></a>    user: "33:33"</span>
<span id="cb8-48"><a href="#cb8-48" aria-hidden="true"></a>    volumes:</span>
<span id="cb8-49"><a href="#cb8-49" aria-hidden="true"></a>      - ./wordpress:/var/www/html</span>
<span id="cb8-50"><a href="#cb8-50" aria-hidden="true"></a>    environment:</span>
<span id="cb8-51"><a href="#cb8-51" aria-hidden="true"></a>      WORDPRESS_DB_HOST: db</span>
<span id="cb8-52"><a href="#cb8-52" aria-hidden="true"></a>      WORDPRESS_DB_USER: wordpress</span>
<span id="cb8-53"><a href="#cb8-53" aria-hidden="true"></a>      WORDPRESS_DB_PASSWORD: wordpress</span>
<span id="cb8-54"><a href="#cb8-54" aria-hidden="true"></a>      WORDPRESS_DB_NAME: wordpress</span>
<span id="cb8-55"><a href="#cb8-55" aria-hidden="true"></a>    depends_on:</span>
<span id="cb8-56"><a href="#cb8-56" aria-hidden="true"></a>      - db</span>
<span id="cb8-57"><a href="#cb8-57" aria-hidden="true"></a>      - wordpress</span>
<span id="cb8-58"><a href="#cb8-58" aria-hidden="true"></a></span>
<span id="cb8-59"><a href="#cb8-59" aria-hidden="true"></a>volumes:</span>
<span id="cb8-60"><a href="#cb8-60" aria-hidden="true"></a>  db_data:</span>
<span id="cb8-61"><a href="#cb8-61" aria-hidden="true"></a><span class="op">EOF</span></span>
<span id="cb8-62"><a href="#cb8-62" aria-hidden="true"></a></span>
<span id="cb8-63"><a href="#cb8-63" aria-hidden="true"></a><span class="co"># Start containers</span></span>
<span id="cb8-64"><a href="#cb8-64" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Starting Docker containers..."</span></span>
<span id="cb8-65"><a href="#cb8-65" aria-hidden="true"></a><span class="ex">docker-compose</span> up -d</span>
<span id="cb8-66"><a href="#cb8-66" aria-hidden="true"></a></span>
<span id="cb8-67"><a href="#cb8-67" aria-hidden="true"></a><span class="co"># Wait for WordPress to be ready</span></span>
<span id="cb8-68"><a href="#cb8-68" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Waiting for WordPress..."</span></span>
<span id="cb8-69"><a href="#cb8-69" aria-hidden="true"></a><span class="fu">sleep</span> 10</span>
<span id="cb8-70"><a href="#cb8-70" aria-hidden="true"></a></span>
<span id="cb8-71"><a href="#cb8-71" aria-hidden="true"></a><span class="co"># Install WordPress</span></span>
<span id="cb8-72"><a href="#cb8-72" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Installing WordPress..."</span></span>
<span id="cb8-73"><a href="#cb8-73" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp core install <span class="kw">\</span></span>
<span id="cb8-74"><a href="#cb8-74" aria-hidden="true"></a>    <span class="ex">--url</span>=localhost:8080 <span class="kw">\</span></span>
<span id="cb8-75"><a href="#cb8-75" aria-hidden="true"></a>    <span class="ex">--title</span>=<span class="st">"</span><span class="va">$PROJECT_NAME</span><span class="st">"</span> <span class="kw">\</span></span>
<span id="cb8-76"><a href="#cb8-76" aria-hidden="true"></a>    <span class="ex">--admin_user</span>=<span class="st">"</span><span class="va">$ADMIN_USER</span><span class="st">"</span> <span class="kw">\</span></span>
<span id="cb8-77"><a href="#cb8-77" aria-hidden="true"></a>    <span class="ex">--admin_password</span>=<span class="st">"</span><span class="va">$ADMIN_PASS</span><span class="st">"</span> <span class="kw">\</span></span>
<span id="cb8-78"><a href="#cb8-78" aria-hidden="true"></a>    <span class="ex">--admin_email</span>=<span class="st">"</span><span class="va">$ADMIN_EMAIL</span><span class="st">"</span></span>
<span id="cb8-79"><a href="#cb8-79" aria-hidden="true"></a></span>
<span id="cb8-80"><a href="#cb8-80" aria-hidden="true"></a><span class="co"># Install essential plugins</span></span>
<span id="cb8-81"><a href="#cb8-81" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Installing plugins..."</span></span>
<span id="cb8-82"><a href="#cb8-82" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp plugin install <span class="kw">\</span></span>
<span id="cb8-83"><a href="#cb8-83" aria-hidden="true"></a>    <span class="ex">contact-form-7</span> <span class="kw">\</span></span>
<span id="cb8-84"><a href="#cb8-84" aria-hidden="true"></a>    <span class="ex">yoast-seo</span> <span class="kw">\</span></span>
<span id="cb8-85"><a href="#cb8-85" aria-hidden="true"></a>    <span class="ex">wordfence</span> <span class="kw">\</span></span>
<span id="cb8-86"><a href="#cb8-86" aria-hidden="true"></a>    <span class="ex">--activate</span></span>
<span id="cb8-87"><a href="#cb8-87" aria-hidden="true"></a></span>
<span id="cb8-88"><a href="#cb8-88" aria-hidden="true"></a><span class="co"># Install theme</span></span>
<span id="cb8-89"><a href="#cb8-89" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Installing theme..."</span></span>
<span id="cb8-90"><a href="#cb8-90" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp theme install astra --activate</span>
<span id="cb8-91"><a href="#cb8-91" aria-hidden="true"></a></span>
<span id="cb8-92"><a href="#cb8-92" aria-hidden="true"></a><span class="co"># Set permalinks</span></span>
<span id="cb8-93"><a href="#cb8-93" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp rewrite structure <span class="st">'/%postname%/'</span></span>
<span id="cb8-94"><a href="#cb8-94" aria-hidden="true"></a></span>
<span id="cb8-95"><a href="#cb8-95" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"✓ WordPress environment ready!"</span></span>
<span id="cb8-96"><a href="#cb8-96" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"URL: http://localhost:8080"</span></span>
<span id="cb8-97"><a href="#cb8-97" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Admin: </span><span class="va">$ADMIN_USER</span><span class="st"> / </span><span class="va">$ADMIN_PASS</span><span class="st">"</span></span></code></pre>
</div>



<p>Run it:</p>



<div class="sourceCode" id="cb9">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true"></a><span class="fu">chmod</span> +x wp-docker-init.sh</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true"></a><span class="ex">./wp-docker-init.sh</span> my-project</span></code></pre>
</div>



<h4 class="wp-block-heading" id="development-helper-scripts">Development Helper Scripts</h4>



<div class="sourceCode" id="cb10">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true"></a><span class="co"># wp.sh - WP-CLI wrapper for Docker</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true"></a><span class="co">#!/bin/bash</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp <span class="st">"</span><span class="va">$@</span><span class="st">"</span></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true"></a></span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true"></a><span class="co"># Usage:</span></span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true"></a><span class="fu">chmod</span> +x wp.sh</span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true"></a><span class="ex">./wp.sh</span> plugin list</span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true"></a><span class="ex">./wp.sh</span> post create --post_title=<span class="st">"Test"</span> --post_status=publish</span></code></pre>
</div>



<h3 class="wp-block-heading" id="workflows">Docker WordPress Workflows</h3>



<p>Professional development patterns with Docker and WP-CLI.</p>



<h4 class="wp-block-heading" id="import-existing-site">Import Existing Site</h4>



<div class="sourceCode" id="cb11">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true"></a><span class="co">#!/bin/bash</span></span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true"></a><span class="co"># import-to-docker.sh - Import existing WordPress site</span></span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true"></a></span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true"></a><span class="va">BACKUP_SQL=</span><span class="st">"</span><span class="va">$1</span><span class="st">"</span></span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true"></a><span class="va">BACKUP_FILES=</span><span class="st">"</span><span class="va">$2</span><span class="st">"</span></span>
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true"></a></span>
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true"></a><span class="kw">if</span><span class="bu"> [</span> <span class="ot">-z</span> <span class="st">"</span><span class="va">$BACKUP_SQL</span><span class="st">"</span><span class="bu"> ]</span>; <span class="kw">then</span></span>
<span id="cb11-8"><a href="#cb11-8" aria-hidden="true"></a>    <span class="bu">echo</span> <span class="st">"Usage: </span><span class="va">$0</span><span class="st"> &lt;backup.sql&gt; &lt;files.tar.gz&gt;"</span></span>
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true"></a>    <span class="bu">exit</span> 1</span>
<span id="cb11-10"><a href="#cb11-10" aria-hidden="true"></a><span class="kw">fi</span></span>
<span id="cb11-11"><a href="#cb11-11" aria-hidden="true"></a></span>
<span id="cb11-12"><a href="#cb11-12" aria-hidden="true"></a><span class="co"># Start containers</span></span>
<span id="cb11-13"><a href="#cb11-13" aria-hidden="true"></a><span class="ex">docker-compose</span> up -d</span>
<span id="cb11-14"><a href="#cb11-14" aria-hidden="true"></a><span class="fu">sleep</span> 10</span>
<span id="cb11-15"><a href="#cb11-15" aria-hidden="true"></a></span>
<span id="cb11-16"><a href="#cb11-16" aria-hidden="true"></a><span class="co"># Import database</span></span>
<span id="cb11-17"><a href="#cb11-17" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Importing database..."</span></span>
<span id="cb11-18"><a href="#cb11-18" aria-hidden="true"></a><span class="ex">docker-compose</span> exec -T db mysql -uwordpress -pwordpress wordpress <span class="op">&lt;</span> <span class="st">"</span><span class="va">$BACKUP_SQL</span><span class="st">"</span></span>
<span id="cb11-19"><a href="#cb11-19" aria-hidden="true"></a></span>
<span id="cb11-20"><a href="#cb11-20" aria-hidden="true"></a><span class="co"># Extract files</span></span>
<span id="cb11-21"><a href="#cb11-21" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Extracting files..."</span></span>
<span id="cb11-22"><a href="#cb11-22" aria-hidden="true"></a><span class="fu">tar</span> -xzf <span class="st">"</span><span class="va">$BACKUP_FILES</span><span class="st">"</span> -C ./wordpress/</span>
<span id="cb11-23"><a href="#cb11-23" aria-hidden="true"></a></span>
<span id="cb11-24"><a href="#cb11-24" aria-hidden="true"></a><span class="co"># Update URLs</span></span>
<span id="cb11-25"><a href="#cb11-25" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Updating URLs..."</span></span>
<span id="cb11-26"><a href="#cb11-26" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp search-replace <span class="kw">\</span></span>
<span id="cb11-27"><a href="#cb11-27" aria-hidden="true"></a>    <span class="st">'https://oldsite.com'</span> <span class="st">'http://localhost:8080'</span> <span class="kw">\</span></span>
<span id="cb11-28"><a href="#cb11-28" aria-hidden="true"></a>    <span class="ex">--skip-columns</span>=guid</span>
<span id="cb11-29"><a href="#cb11-29" aria-hidden="true"></a></span>
<span id="cb11-30"><a href="#cb11-30" aria-hidden="true"></a><span class="co"># Flush cache</span></span>
<span id="cb11-31"><a href="#cb11-31" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp cache flush</span>
<span id="cb11-32"><a href="#cb11-32" aria-hidden="true"></a></span>
<span id="cb11-33"><a href="#cb11-33" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"✓ Site imported successfully"</span></span></code></pre>
</div>



<h4 class="wp-block-heading" id="export-for-production">Export for Production</h4>



<div class="sourceCode" id="cb12">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true"></a><span class="co">#!/bin/bash</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true"></a><span class="co"># export-from-docker.sh</span></span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true"></a></span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true"></a><span class="va">DATE=$(</span><span class="fu">date</span> +%Y%m%d<span class="va">)</span></span>
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true"></a></span>
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"Exporting WordPress from Docker..."</span></span>
<span id="cb12-7"><a href="#cb12-7" aria-hidden="true"></a></span>
<span id="cb12-8"><a href="#cb12-8" aria-hidden="true"></a><span class="co"># Export database</span></span>
<span id="cb12-9"><a href="#cb12-9" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp db export - <span class="op">&gt;</span> <span class="st">"backup-</span><span class="va">$DATE</span><span class="st">.sql"</span></span>
<span id="cb12-10"><a href="#cb12-10" aria-hidden="true"></a></span>
<span id="cb12-11"><a href="#cb12-11" aria-hidden="true"></a><span class="co"># Compress database</span></span>
<span id="cb12-12"><a href="#cb12-12" aria-hidden="true"></a><span class="fu">gzip</span> <span class="st">"backup-</span><span class="va">$DATE</span><span class="st">.sql"</span></span>
<span id="cb12-13"><a href="#cb12-13" aria-hidden="true"></a></span>
<span id="cb12-14"><a href="#cb12-14" aria-hidden="true"></a><span class="co"># Archive files</span></span>
<span id="cb12-15"><a href="#cb12-15" aria-hidden="true"></a><span class="fu">tar</span> -czf <span class="st">"files-</span><span class="va">$DATE</span><span class="st">.tar.gz"</span> -C ./wordpress .</span>
<span id="cb12-16"><a href="#cb12-16" aria-hidden="true"></a></span>
<span id="cb12-17"><a href="#cb12-17" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"✓ Export complete:"</span></span>
<span id="cb12-18"><a href="#cb12-18" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"  Database: backup-</span><span class="va">$DATE</span><span class="st">.sql.gz"</span></span>
<span id="cb12-19"><a href="#cb12-19" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"  Files: files-</span><span class="va">$DATE</span><span class="st">.tar.gz"</span></span></code></pre>
</div>



<h4 class="wp-block-heading" id="reset-development-environment">Reset Development Environment</h4>



<div class="sourceCode" id="cb13">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true"></a><span class="co">#!/bin/bash</span></span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true"></a><span class="co"># reset-docker-wordpress.sh</span></span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true"></a></span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true"></a><span class="bu">read</span> -p <span class="st">"This will destroy all data. Continue? (y/n) "</span> -n 1 -r</span>
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true"></a><span class="bu">echo</span></span>
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true"></a><span class="kw">if [[</span> <span class="ot">!</span> <span class="va">$REPLY</span> =~ ^[Yy]$<span class="kw"> ]]</span>; <span class="kw">then</span></span>
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true"></a>    <span class="bu">exit</span> 0</span>
<span id="cb13-8"><a href="#cb13-8" aria-hidden="true"></a><span class="kw">fi</span></span>
<span id="cb13-9"><a href="#cb13-9" aria-hidden="true"></a></span>
<span id="cb13-10"><a href="#cb13-10" aria-hidden="true"></a><span class="co"># Stop and remove containers</span></span>
<span id="cb13-11"><a href="#cb13-11" aria-hidden="true"></a><span class="ex">docker-compose</span> down -v</span>
<span id="cb13-12"><a href="#cb13-12" aria-hidden="true"></a></span>
<span id="cb13-13"><a href="#cb13-13" aria-hidden="true"></a><span class="co"># Remove WordPress files</span></span>
<span id="cb13-14"><a href="#cb13-14" aria-hidden="true"></a><span class="fu">rm</span> -rf ./wordpress/*</span>
<span id="cb13-15"><a href="#cb13-15" aria-hidden="true"></a></span>
<span id="cb13-16"><a href="#cb13-16" aria-hidden="true"></a><span class="co"># Start fresh</span></span>
<span id="cb13-17"><a href="#cb13-17" aria-hidden="true"></a><span class="ex">docker-compose</span> up -d</span>
<span id="cb13-18"><a href="#cb13-18" aria-hidden="true"></a><span class="fu">sleep</span> 10</span>
<span id="cb13-19"><a href="#cb13-19" aria-hidden="true"></a></span>
<span id="cb13-20"><a href="#cb13-20" aria-hidden="true"></a><span class="co"># Reinstall</span></span>
<span id="cb13-21"><a href="#cb13-21" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp core install <span class="kw">\</span></span>
<span id="cb13-22"><a href="#cb13-22" aria-hidden="true"></a>    <span class="ex">--url</span>=localhost:8080 <span class="kw">\</span></span>
<span id="cb13-23"><a href="#cb13-23" aria-hidden="true"></a>    <span class="ex">--title</span>=<span class="st">"Fresh WordPress"</span> <span class="kw">\</span></span>
<span id="cb13-24"><a href="#cb13-24" aria-hidden="true"></a>    <span class="ex">--admin_user</span>=admin <span class="kw">\</span></span>
<span id="cb13-25"><a href="#cb13-25" aria-hidden="true"></a>    <span class="ex">--admin_password</span>=admin <span class="kw">\</span></span>
<span id="cb13-26"><a href="#cb13-26" aria-hidden="true"></a>    <span class="ex">--admin_email</span>=admin@example.com</span>
<span id="cb13-27"><a href="#cb13-27" aria-hidden="true"></a></span>
<span id="cb13-28"><a href="#cb13-28" aria-hidden="true"></a><span class="bu">echo</span> <span class="st">"✓ Environment reset complete"</span></span></code></pre>
</div>



<h3 class="wp-block-heading" id="testing-debugging">Testing and Debugging</h3>



<p>Debug WordPress issues in Docker containers.</p>



<h4 class="wp-block-heading" id="view-container-logs">View Container Logs</h4>



<div class="sourceCode" id="cb14">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true"></a><span class="co"># WordPress logs</span></span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true"></a><span class="ex">docker-compose</span> logs -f wordpress</span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true"></a></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true"></a><span class="co"># Database logs</span></span>
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true"></a><span class="ex">docker-compose</span> logs -f db</span>
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true"></a></span>
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true"></a><span class="co"># All logs</span></span>
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true"></a><span class="ex">docker-compose</span> logs -f</span>
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true"></a></span>
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true"></a><span class="co"># Last 50 lines</span></span>
<span id="cb14-11"><a href="#cb14-11" aria-hidden="true"></a><span class="ex">docker-compose</span> logs --tail=50 wordpress</span></code></pre>
</div>



<h4 class="wp-block-heading" id="access-container-shell">Access Container Shell</h4>



<div class="sourceCode" id="cb15">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true"></a><span class="co"># WordPress container bash</span></span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true"></a><span class="ex">docker-compose</span> exec wordpress bash</span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true"></a></span>
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true"></a><span class="co"># Once inside, check PHP info</span></span>
<span id="cb15-5"><a href="#cb15-5" aria-hidden="true"></a><span class="ex">php</span> -i</span>
<span id="cb15-6"><a href="#cb15-6" aria-hidden="true"></a></span>
<span id="cb15-7"><a href="#cb15-7" aria-hidden="true"></a><span class="co"># Check Apache config</span></span>
<span id="cb15-8"><a href="#cb15-8" aria-hidden="true"></a><span class="fu">cat</span> /etc/apache2/sites-available/000-default.conf</span>
<span id="cb15-9"><a href="#cb15-9" aria-hidden="true"></a></span>
<span id="cb15-10"><a href="#cb15-10" aria-hidden="true"></a><span class="co"># View error logs</span></span>
<span id="cb15-11"><a href="#cb15-11" aria-hidden="true"></a><span class="fu">tail</span> -f /var/log/apache2/error.log</span></code></pre>
</div>



<h4 class="wp-block-heading" id="debug-wp-cli-issues">Debug WP-CLI Issues</h4>



<div class="sourceCode" id="cb16">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true"></a><span class="co"># Check WP-CLI version</span></span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp cli version</span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true"></a></span>
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true"></a><span class="co"># Verify WordPress installation</span></span>
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp core is-installed</span>
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true"></a></span>
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true"></a><span class="co"># Check database connection</span></span>
<span id="cb16-8"><a href="#cb16-8" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp db check</span>
<span id="cb16-9"><a href="#cb16-9" aria-hidden="true"></a></span>
<span id="cb16-10"><a href="#cb16-10" aria-hidden="true"></a><span class="co"># List environment variables</span></span>
<span id="cb16-11"><a href="#cb16-11" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli env</span></code></pre>
</div>



<h3 class="wp-block-heading" id="optimization">Performance Optimization</h3>



<p>Improve Docker WordPress performance for development.</p>



<h4 class="wp-block-heading" id="enable-object-caching">Enable Object Caching</h4>



<div class="sourceCode" id="cb17">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true"></a><span class="fu">services</span><span class="kw">:</span></span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true"></a><span class="at">  </span><span class="fu">redis</span><span class="kw">:</span></span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> redis:alpine</span></span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true"></a><span class="at">    </span><span class="fu">ports</span><span class="kw">:</span></span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> </span><span class="st">"6379:6379"</span></span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true"></a></span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true"></a><span class="at">  </span><span class="fu">wordpress</span><span class="kw">:</span></span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true"></a><span class="co">    # ... existing config</span></span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true"></a><span class="at">    </span><span class="fu">depends_on</span><span class="kw">:</span></span>
<span id="cb17-10"><a href="#cb17-10" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> db</span></span>
<span id="cb17-11"><a href="#cb17-11" aria-hidden="true"></a><span class="at">      </span><span class="kw">-</span><span class="at"> redis</span></span></code></pre>
</div>



<p>Install Redis plugin:</p>



<div class="sourceCode" id="cb18">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp plugin install redis-cache --activate</span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true"></a><span class="ex">docker-compose</span> run --rm wpcli wp redis enable</span></code></pre>
</div>



<h4 class="wp-block-heading" id="optimize-mysql">Optimize MySQL</h4>



<div class="sourceCode" id="cb19">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true"></a><span class="fu">services</span><span class="kw">:</span></span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true"></a><span class="at">  </span><span class="fu">db</span><span class="kw">:</span></span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true"></a><span class="at">    </span><span class="fu">image</span><span class="kw">:</span><span class="at"> mysql:8.0</span></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true"></a><span class="at">    </span><span class="fu">command</span><span class="kw">:</span><span class="at"> --default-authentication-plugin=mysql_native_password --innodb-buffer-pool-size=256M</span></span></code></pre>
</div>



<h4 class="wp-block-heading" id="volume-performance">Volume Performance</h4>



<div class="sourceCode" id="cb20">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true"></a><span class="co"># Use cached mode for better performance on macOS</span></span>
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true"></a><span class="fu">volumes</span><span class="kw">:</span></span>
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true"></a><span class="at">  </span><span class="kw">-</span><span class="at"> ./wordpress:/var/www/html:cached</span></span></code></pre>
</div>



<p>Learn about <a href="https://docs.docker.com/storage/volumes/">Docker volume performance</a> optimization.</p>



<h3 class="wp-block-heading" id="next-steps">Next Steps</h3>



<p>You now have professional Docker-based WordPress development skills with WP-CLI integration.</p>



<h4 class="wp-block-heading" id="recommended-learning-path">Recommended Learning Path</h4>



<p><strong>Week 1</strong>: Basic Docker setup</p>



<ul class="wp-block-list">
<li>Launch WordPress with Docker Compose</li>



<li>Run WP-CLI in containers</li>



<li>Import/export sites</li>
</ul>



<p><strong>Week 2</strong>: Advanced configuration</p>



<ul class="wp-block-list">
<li>Test multiple PHP versions</li>



<li>Add development tools</li>



<li>Optimize performance</li>
</ul>



<p><strong>Week 3</strong>: Automation</p>



<ul class="wp-block-list">
<li>Build setup scripts</li>



<li>Create helper commands</li>



<li>Implement CI/CD</li>
</ul>



<p><strong>Week 4</strong>: Team workflows</p>



<ul class="wp-block-list">
<li>Share configurations</li>



<li>Document processes</li>



<li>Standardize environments</li>
</ul>



<h4 class="wp-block-heading" id="advanced-topics">Advanced Topics</h4>



<ol class="wp-block-list">
<li><strong><a href="#">Docker Multi-Stage Builds</a></strong> &#8211; Optimized production images</li>



<li><strong><a href="#">Kubernetes WordPress</a></strong> &#8211; Container orchestration</li>



<li><strong><a href="#">CI/CD Pipelines</a></strong> &#8211; Automated deployment</li>
</ol>



<h4 class="wp-block-heading" id="get-more-resources">Get More Resources</h4>



<p><strong><a href="#">Download Docker WordPress configs</a></strong> including:</p>



<ul class="wp-block-list">
<li>Complete docker-compose files</li>



<li>Setup automation scripts</li>



<li>Development tools</li>
</ul>



<p><strong><a href="/#get-started">Join our email course</a></strong> for:</p>



<ul class="wp-block-list">
<li>Weekly WP-CLI tutorials</li>



<li>Docker best practices</li>



<li>Modern WordPress DevOps</li>
</ul>



<h3 class="wp-block-heading" id="conclusion">Conclusion</h3>



<p>Docker and WP-CLI together create the ultimate WordPress development environment—fast, consistent, isolated, and completely reproducible across your entire team.</p>



<p>What we covered:</p>



<p>✅ Docker Compose WordPress configuration <br>✅ WP-CLI integration in containers <br>✅ Advanced Docker features (multiple PHP versions, tools) <br>✅ Automated setup and teardown scripts <br>✅ Import/export workflows <br>✅ Testing, debugging, and optimization</p>



<p>Master these techniques, and you’ll never waste time on local WordPress setup again—spin up fresh environments in seconds, test across PHP versions, and share identical setups with your team.</p>



<p><strong>Ready for more?</strong> Learn <a href="#">WordPress CI/CD pipelines</a> or <a href="#">Kubernetes deployment</a>.</p>



<p><strong>Questions about Docker WordPress with WP-CLI?</strong> Drop a comment below!</p>



<p><strong>Found this helpful?</strong> Share with other WordPress developers.</p>
<p>The post <a href="https://wpclimastery.com/blog/wordpress-development-with-docker-and-wp-cli-complete-setup-guide/">WordPress Development with Docker and WP-CLI: Complete Setup Guide</a> appeared first on <a href="https://wpclimastery.com">WP-CLI Mastery</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
