# How to Run WordPress as a Container App (Without Managing a Server)
Self-hosted WordPress has a well-known problem: you spend more time managing the server than building the site. Security patches, PHP version upgrades, database maintenance, SSL renewals — none of this is why you chose WordPress.
To be clear up front: PandaStack does not offer a managed WordPress product. There is no one-click WordPress installer, no automatic WordPress core or plugin updates, and no WordPress-specific support tier. If that is what you want, a dedicated managed WordPress host like WP Engine, Kinsta, or Cloudways is the right tool.
What PandaStack *does* give you is a container platform and a managed MySQL database. Since WordPress ships an official Docker image, you can run WordPress as a normal container app and let the platform handle the parts that are genuinely infrastructure: the container runtime, TLS, the database, and monitoring. You still own WordPress itself.
What You Get (and What You Own)
Handled by the platform:
- Container build and deployment from a Dockerfile or image
- Automatic SSL certificate and custom domain support
- Managed MySQL database with backups
- Uptime monitoring and alerts
- Logs and resource metrics
Still your responsibility:
- WordPress core, theme, and plugin updates
- Persistent storage strategy for uploads
- Caching and performance plugins
- WordPress-level security hardening
Step 1: Create the Managed MySQL Database
- 1Log in to [dashboard.pandastack.io](https://dashboard.pandastack.io)
- 2Go to Databases → New Database
- 3Select MySQL
- 4Choose a name and tier, then click Create
Once provisioned, copy the connection details — host, port, database name, username, and password. WordPress needs all five.
Step 2: Deploy the WordPress Container
Create a repository with a minimal Dockerfile:
FROM wordpress:php8.3-apacheThat is genuinely all you need to start — the official image contains WordPress and a configured PHP/Apache stack. Then in the dashboard:
- 1Go to Apps → New App
- 2Connect your GitHub repository
- 3Select Container as the deployment type
- 4Set the exposed port to
80 - 5Click Deploy
Step 3: Wire WordPress to the Database
WordPress reads its database configuration from environment variables in the official image. In your app settings, add:
WORDPRESS_DB_HOST— the MySQL host and port from Step 1WORDPRESS_DB_NAME— your database nameWORDPRESS_DB_USER— your database usernameWORDPRESS_DB_PASSWORD— your database password
Redeploy after saving. On first boot, WordPress runs its installer against the managed database.
Step 4: Connect a Custom Domain
- 1In your app dashboard, click Domains → Add Domain
- 2Enter your domain (e.g.,
yourblog.com) - 3In your DNS provider, add a CNAME record pointing to the hostname shown in PandaStack
- 4Click Verify
SSL is issued automatically once DNS propagates.
Then go to wp-admin → Settings → General and set WordPress Address and Site Address to your HTTPS domain.
Step 5: Handle Uploads and Persistence
This is the most important difference from a managed WordPress host, and it is easy to get wrong. Container filesystems are ephemeral — anything written to wp-content/uploads inside the container is lost on redeploy.
Two workable approaches:
- Attach a persistent volume to the app and mount it at
/var/www/html/wp-content/uploads - Use an object-storage offload plugin so media goes to S3-compatible storage instead of local disk
Pick one before you publish real content. Retrofitting this after you have hundreds of uploaded images is painful.
Step 6: Set Up Monitoring and Alerts
In your app dashboard, go to Monitoring → Add Alert:
- Alert type: Uptime check (HTTP 200 on your homepage)
- Notification channel: Email, Slack webhook, or custom webhook
- Frequency: Every 5 minutes
You will be notified immediately if your site goes down.
Container WordPress vs. Managed WordPress Hosts
| Concern | WordPress as a container app | Dedicated managed WordPress host |
|---|---|---|
| Server setup | None | None |
| SSL certificate | Automatic | Automatic |
| Database | Managed MySQL, provisioned separately | Bundled |
| WordPress core updates | Your responsibility | Managed |
| Plugin update automation | Your responsibility | Usually included |
| Staging environments | Preview environments (generic) | WordPress-aware |
| Runs alongside your APIs and workers | Yes | No |
When This Approach Makes Sense
Running WordPress as a container app is a good fit when WordPress is one piece of a larger system you already host — an API, a set of workers, a couple of databases — and you would rather not add another vendor for a single marketing site. You accept owning WordPress updates in exchange for consolidation.
If WordPress *is* the product and you want someone else handling core updates, plugin compatibility, and WordPress-specific support, use a purpose-built managed WordPress host instead. That is a real category, and PandaStack is not competing in it.
Full docs: [docs.pandastack.io](https://docs.pandastack.io).