We sponsor a monthly CakePHP training session (register here https://training.cakephp.org ) where we cover different topics about the framework. One of our sessions, the "Getting Started with CakePHP 4" is aimed to help developers starting a new project quickly and following the best practices.
Our previous "recommended" quick setting for a CakePHP development environment was using a vagrant box. See details here: https://www.cakedc.com/jorge_gonzalez/2018/01/17/using-a-vagrant-box-as-quick-environment-for-the-getting-started-with-cakephp-training-session. However, we've switched internally to use docker as our primary development environment and also we started using docker in our training sessions.
Here's a quick overview of a simple docker based development environment for CakePHP.
1. Create a new CakePHP project skeleton using
composer create-project cakephp/app myproject
A new folder "myproject" will be created with a CakePHP project skeleton inside. Go to this new directory and proceed.
2. Create a new "docker-compose.yaml" file with the following contents
3. Run "docker-compose up"
You'll create 2 containers named
cakephp - check the docker-compose configuration to see default database and users created in the mysql container, and the same environment params passed to the cakephp container via DATABASE_URL to allow the cakephp container to connect with the mysql database.
NOTE: the ports exposed are 9306 for mysql and 8099 for cakephp webserver. You can list them using
4. Access your database and cakephp shell
To access the database you can use the command:
mysql --port 9306 -umy_app -psecret my_app
To restore a database dump for example, you can use the command:
curl -L https://raw.githubusercontent.com/CakeDC/cakephp4-getting-started-session/master/my_app.sql |mysql --port 9306 -umy_app -psecret my_app
You can also configure any database tool to access the database in:
To access the cakephp environment and shell you can use the command:
docker exec -it --user application cakephp bash
You'll go to the webroot folder, so in order to run the cake shell you'll need to:
Now you have a working environment to play with the training session contents.
In this previous article, we covered another approach to setting up a local docker environment: https://www.cakedc.com/rochamarcelo/2020/07/20/a-quick-cakephp-local-environment-with-docker
We hope to see you in our next training session!