Template repository for an All-Singing, All-Dancing, Not-Shit Autonomic Wordpress Site (ASADNSA). To use this, create a new repository in Gitea and choose this one as a template.
src | ||
.drone.yml | ||
.env.sample | ||
.gitignore | ||
docker-compose.yml | ||
README.md |
wordpress-bedrock-docker
A template for a Wordpress site using Bedrock (Composer) + Docker.
Based on
autonomic-cooperative/wordpress-docker-composer
and
autonomic-cooperative/wordpress-nginx-docker
.
Quick start
- Install Docker, docker-compose, and git
- Create a new repository in Gitea, using this repository as a template
- Clone the new repository
- Copy
.env.sample
to.env
- Copy
src/.env.example
tosrc/.env
- Run
docker-compose up
You should now be able to access the local site on http://localhost
Development
Debugging
Set WP_ENV=development
in src/.env
to enable debugging output and the debug
log, and enable plugin and theme installation via the dashboard.
The debug log is located:
- outside containers:
./src/web/app/debug.log
- inside containers:
/app/web/app/debug.log
Importing a database dump
Assuming you have dump.sql.gz
in the current directory:
zcat dump.sql.gz | docker-compose exec -T db mysql -u wordpress -pwordpress wordpress
Post-restore steps:
- If the upload path was set in the database, you will need to change it (in
Settings → Media) to
/app/web/app/uploads
- If the site you're loading used a non-standard database table prefix (i.e.
not
wp
), you'll need to specify it asDB_PREFIX
insrc/.env
.
Deployment
Initial set-up
Our recommended production deployment set-up is:
- Web server: Nginx (ease of configuration vs. Apache, nobody seems to be using other web servers for Wordpress)
- PHP: PHP-FPM (better performance and security than mod_php)
- Database: MariaDB (flipped a coin between that and MySQL..)
- Auto-deployment: Drone (Autonomic standard)
- Updates: renovate-bot (Autonomic standard)
- Orchestration: Docker "swarm mode" / Co-op Cloud (Autonomic standard, also standardises backups and SSL, and makes it easier to migrate between servers)
- Host operating system: Debian (but others should work too)
- Server provisioning: Our autonomic-cooperative/infrastructure Ansible playbooks