A while ago I used to do my WordPress development using this "vagrant-based" environment. It's very well written, opensource and comes with whatever you may need to create themes and plugins for WordPress.
But I wanted something lighter.
I needed a superlight WordPress installation, with no hassle and a very fast deployment. Docker Compose was the right choice.
- Containers are lighter than a Virtual Machine
- Containers are isolated but share the same OS and libraries (if needed)
- If needed, the same docker-compose.yml file can be used for development and production, making environments compatible at a higher level.
So, here's my docker-compose.yml
file, for you to use.
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: password
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
volumes:
- ./wp-content/:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: password
volumes:
db_data:
You can also clone it from GitHub, if you want.
Let's dig into this a bit...
First line: we're telling docker which syntax version we're going to use in the rest of the file. You can read more about the different versions on the docs.
Then in the services
section we're telling the system we need these images:
- MySQL version 5.7, with some "strong" credentials :P
- WordPress, latest version
For WordPress, we're telling the WordPress image to map the port 80 to our 8000, and to map the local wp-content
folder to the same folder in the WordPress installation.
We're going to put all our code in that folder, in order to make it available in the WordPress admin panel (think of themes and plugins).
So, to be up and running all you have to do is:
- Install docker from https://www.docker.com/
- Clone the repo
- Run
docker-compose up
Open your browser. go to http://localhost:8000
and you're good to go!
Easy, isn't it?
Originally published @ https://coding.napolux.com
Top comments (13)
what about user permissions for the local /wp-content/?
Would like to know how to solve it
Well, if you have problems, go with 777 and be happy :P
I don't have any problem, my folder is at 644
bro go with 777 is almost always a terrible idea. :(
It is in general. Probably not in this specific case ;-)
I have the same issue. The files are all owned by
www-data:www-data
and have permission 644 - I don't have permissions to edit/create because my user isadam
and even if I add me to groupwww-data
I won't get access. Any advice? And how would you do it with 777 permission? Would you change the permission each time you create a new file?Wordup is also worth a try, it automates this whole process:
Developing a WordPress theme/plugin with wordup
shry ・ May 9 ・ 2 min read
Awesome! I love
Spotted 1 small error: your last two lines should be
and not
otherwise it won't build. It's fine in your git repo though.
I agree that the 777 file permission is totally fine here. After all it's supposed to be a local dev environment.
Fixed, thanks!
Not sure what useful info have you added in this post. The same but in more details can be found here
hub.docker.com/_/wordpress/
I have error
ERROR: for wordpress-local_db_1 Cannot start service db: b'Mounts denied: EOF'
ERROR: for db Cannot start service db: b'Mounts denied: EOF'
ERROR: Encountered errors while bringing up the project.
Hi. I have an error
MySQL Connection Error: (1130) Host '172.18.0.3' is not allowed to connect to this MySQL server
This is the first docker/Wordpress tutorial/repo that has worked for me on the first try! Thanks!