├── .gitignore ├── README.md ├── docker-compose.yml ├── docker ├── dump │ └── example.sql └── php │ └── php.conf.uploads.ini ├── src └── .gitkeep └── utils └── dump.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Wordpress Dockerized Environment 2 | [![PRs Welcome][prs-badge]][prs] 3 | 4 | This repository aims to simplify the setting up of a docker-compose development environment. 5 | 6 | ## Pre-requirements 7 | First, make sure you have the latest versions of **Docker** and **Docker Compose** installed on your machine. 8 | - [Docker](https://docs.docker.com/engine/installation/) 9 | - [Docker Compose](https://docs.docker.com/compose/install/) 10 | 11 | ## From a new project 12 | 13 | - [Download](https://wordpress.org/latest.zip) latest WordPress version. 14 | - Unzip `wordpress-x.x.x.zip` archive. 15 | - Move all files present in the unzipped folder to `src/` 16 | - Run `docker-compose up`. 17 | 18 | ## From an existing project 19 | - Move all your files to `src/`. 20 | - Copy the SQL dump file to `docker/dump/`. 21 | - Update database credentials in `docker-compose.yml` with your own values. 22 | - Run `docker-compose up`. 23 | 24 | ## Ready 25 | 26 | There are two ways to access to your local WordPress: 27 | 28 | ``` 29 | # Directly from your local machine IP. 30 | http://127.0.0.1:80 31 | 32 | # From a local domain (cf: Utils/WordPress section), add below line in your /etc/hosts file. 33 | 127.0.0.1 wordpress.local 34 | ``` 35 | 36 | ### Docker Compose 37 | 38 | ``` 39 | # To start/restart your containers 40 | $ docker-compose up 41 | 42 | # To start/restart your containers in background 43 | $ docker-compose up -d 44 | 45 | # To stop all containers 46 | $ docker-compose stop 47 | 48 | # To stop and remove all containers 49 | $ sudo docker-compose down 50 | 51 | # To remove all stoped containers 52 | $ docker-compose rm --all 53 | 54 | # To connect you into wordpress container 55 | $ docker-compose exec wordpress /bin/bash 56 | 57 | # To connect you into mysql container 58 | $ docker-compose exec mydb.mysql.db /bin/bash 59 | ``` 60 | 61 | ### WordPress 62 | 63 | To override the hostname without changing any data in your database add in your **wp-config.php** the below lines: 64 | ``` 65 | define('WP_HOME','http://wordpress.local'); 66 | define('WP_SITEURL','http://wordpress.local'); 67 | ``` 68 | 69 | ### Scripts 70 | ``` 71 | # To dump MySQL 72 | $ bash utils/dump.sh 73 | ``` 74 | 75 | 76 | [prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square 77 | [prs]: http://makeapullrequest.com 78 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2.1' 2 | 3 | services: 4 | wordpress: 5 | container_name: wordpress 6 | image: wordpress 7 | ports: 8 | - 127.0.0.1:80:80 9 | volumes: 10 | - ./docker/php/php.conf.uploads.ini:/usr/local/etc/php/conf.d/uploads.ini 11 | - ./src:/var/www/html 12 | environment: 13 | WORDPRESS_DB_HOST: mydb.db 14 | WORDPRESS_DB_NAME: wordpress 15 | WORDPRESS_DB_USER: rimiti 16 | WORDPRESS_DB_PASSWORD: password 17 | depends_on: 18 | - mydb.db 19 | networks: 20 | - wordpress-network 21 | 22 | mydb.db: 23 | container_name: mydb.db 24 | image: library/mysql:5.7.22 25 | ports: 26 | - 127.0.0.1:3306:3306 27 | volumes: 28 | - .:/website 29 | - ./docker/dump:/docker-entrypoint-initdb.d 30 | environment: 31 | MYSQL_USER: rimiti 32 | MYSQL_PASSWORD: password 33 | MYSQL_DATABASE: wordpress 34 | MYSQL_ROOT_PASSWORD: password 35 | networks: 36 | - wordpress-network 37 | 38 | networks: 39 | wordpress-network: 40 | driver: bridge -------------------------------------------------------------------------------- /docker/dump/example.sql: -------------------------------------------------------------------------------- 1 | -- CREATE DATABASE mydatabase; -------------------------------------------------------------------------------- /docker/php/php.conf.uploads.ini: -------------------------------------------------------------------------------- 1 | file_uploads = On 2 | memory_limit = 500M 3 | upload_max_filesize = 30M 4 | post_max_size = 30M 5 | max_execution_time = 600 -------------------------------------------------------------------------------- /src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rimiti/wordpress-dockerized-environment/0fd4a065d49fd5f15fe00c47224c5afc04da4d5a/src/.gitkeep -------------------------------------------------------------------------------- /utils/dump.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | _os="`uname`" 3 | _now=$(date +"%m_%d_%Y") 4 | _file="src/data_$_now.sql" 5 | docker-compose exec mydb.mysql.db sh -c 'exec mysqldump "$MYSQL_DATABASE" -uroot -p"$MYSQL_ROOT_PASSWORD"' > $_file 6 | if [[ $_os == "Darwin"* ]] ; then 7 | sed -i '.bak' 1,1d $_file 8 | else 9 | sed -i 1,1d $_file # Removes the password warning from the file 10 | fi --------------------------------------------------------------------------------