├── .env ├── .gitignore ├── README.md ├── docker-compose.yml ├── install.sh └── site.env /.env: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | WORDPRESS_DB_HOST=db 4 | WORDPRESS_DB_NAME=exampledb 5 | WORDPRESS_DB_PASSWORD=examplepass 6 | WORDPRESS_DB_USER=exampleuser 7 | MYSQL_DATABASE=exampledb 8 | MYSQL_PASSWORD=examplepass 9 | MYSQL_RANDOM_ROOT_PASSWORD=1 10 | MYSQL_USER=exampleuser 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | wp-content 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Installation 2 | 3 | ```bash 4 | git clone https://github.com/eustatos/wordpress-docker-dev-env.git 5 | ``` 6 | or, if you prefer `ssh` 7 | ```bash 8 | git clone git@github.com:eustatos/wordpress-docker-dev-env.git 9 | ``` 10 | After 11 | ```bash 12 | cd wordpress-docker-dev-env 13 | docker-compose up -d 14 | docker-compose exec -T wp-cli sh < install.sh 15 | ``` 16 | Open in browser `localhost:8080` 17 | Default admin login - `admin` 18 | Default admin password - `123` 19 | 20 | You can chage this and other environment variables in `site.env` and `.env`. 21 | 22 | Now you can modify or create content in folder `wp-content`. 23 | If you have trouble with permissions - run: 24 | ```bash 25 | sudo usermod -a -G www-data $USER 26 | ``` 27 | 28 | ## Customization 29 | 30 | If you don't want create default theme or/and plugin, you can modify 31 | `install.sh`. 32 | ```bash 33 | #!/usr/bin/env bash 34 | 35 | wp core download --force --allow-root 36 | wp config create \ 37 | --dbhost=$WORDPRESS_DB_HOST \ 38 | --dbname=$WORDPRESS_DB_NAME \ 39 | --dbuser=$WORDPRESS_DB_USER \ 40 | --dbpass=$WORDPRESS_DB_PASSWORD \ 41 | --allow-root 42 | wp core install \ 43 | --title=$TITLE \ 44 | --url=$URL \ 45 | --admin_user=$ADMIN_USER \ 46 | --admin_password=$ADMIN_PASSWORD \ 47 | --admin_email=$ADMIN_EMAIL \ 48 | # add for skip creation default themes 49 | --skip-themes 50 | # add for skip creation default plugins 51 | --skip-plugins 52 | --allow-root 53 | ``` 54 | 55 | Read more about `wp core install` 56 | [here](https://developer.wordpress.org/cli/commands/core/install/) 57 | 58 | ## Example command for create content 59 | 60 | For example, if you want to develop new theme based on `underscores` 61 | ```bash 62 | docker-compose exec -T wp-cli wp scaffold _s \ 63 | sample-theme \ 64 | --theme_name="Sample Theme" \ 65 | --author="John Doe" 66 | ``` 67 | This command create folder `sample-theme` in `wp-content` and you can start to 68 | develop 69 | 70 | [![video tutorial](https://img.youtube.com/vi/0TQU8y6hZ30/0.jpg)](https://www.youtube.com/watch?v=0TQU8y6hZ30) 71 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | 3 | services: 4 | 5 | db: 6 | image: mysql:5.7 7 | container_name: db 8 | restart: always 9 | environment: 10 | MYSQL_DATABASE: ${MYSQL_DATABASE} 11 | MYSQL_USER: ${MYSQL_USER} 12 | MYSQL_PASSWORD: ${MYSQL_PASSWORD} 13 | MYSQL_RANDOM_ROOT_PASSWORD: ${MYSQL_RANDOM_ROOT_PASSWORD} 14 | 15 | wp-cli: 16 | image: eustatos/wp-cli 17 | container_name: wp-cli 18 | restart: always 19 | ports: 20 | - 8080:80 21 | volumes: 22 | - ./wp-content:/var/www/html/wp-content 23 | environment: 24 | WORDPRESS_DB_HOST: ${WORDPRESS_DB_HOST} 25 | WORDPRESS_DB_USER: ${WORDPRESS_DB_USER} 26 | WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_PASSWORD} 27 | WORDPRESS_DB_NAME: ${WORDPRESS_DB_NAME} 28 | env_file: ./site.env 29 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wp core download --force --allow-root 4 | wp config create \ 5 | --dbhost=$WORDPRESS_DB_HOST \ 6 | --dbname=$WORDPRESS_DB_NAME \ 7 | --dbuser=$WORDPRESS_DB_USER \ 8 | --dbpass=$WORDPRESS_DB_PASSWORD \ 9 | --allow-root 10 | wp core install \ 11 | --title=$TITLE \ 12 | --url=$URL \ 13 | --admin_user=$ADMIN_USER \ 14 | --admin_password=$ADMIN_PASSWORD \ 15 | --admin_email=$ADMIN_EMAIL \ 16 | --allow-root 17 | chown -R www-data:www-data wp-content 18 | chmod -R g+w wp-content 19 | -------------------------------------------------------------------------------- /site.env: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | TITLE=example 4 | URL=localhost:8080 5 | ADMIN_USER=admin 6 | ADMIN_PASSWORD=123 7 | ADMIN_EMAIL=admin@example.com 8 | --------------------------------------------------------------------------------