A cakephp/app template for Docker Compose and Kubernetes. You might also be interested in CakePHP Galley which is similar to Laravel Sail or DevilBox.
- Docker 20 or higher
- Make
| Service | Host:Port | Docker Host | Image |
|---|---|---|---|
| PHP8.4-FPM w/ Xdebug 3 | - | php | cnizzardini/php-fpm-alpine:8.4-latest |
| NGINX 1.19 | localhost:8080 | web | nginx:1.19-alpine |
| MySQL 8 | localhost:3607 | db | library/mysql:8 |
Fork and clone this repository then run:
make initThat's it! Now just remove app/* from .gitignore. You may also want to remove .assets and adjust defaults in .github, .docker, and .kube.
Note:
make initandmake init.nocacheoutput interactively, whilemake startandmake updo not.
-
Change your
SHELLin the Makefile to/bin/zsh. This improves various output from the Makefile such as emoji's. -
Mac ships with an older version of
sedso installgnu-sedfor some targets in the Makefile:
brew install gnu-sedThen update sed to gsed in the Makefile.
After install browse to http://localhost:8080 to see the CakePHP welcome page.
A Makefile is provided with some optional commands for your convenience. Please review the Makefile as these commands are not exact aliases of docker-compose commands.
| Make Command | Description |
|---|---|
make | Shows all make target commands |
make init | Runs docker build, docker-compose up, and copies over env files |
make init.nocache | Same as make.init but builds with --no-cache |
make start | Starts services docker-compose -f .docker/docker-compose.yml start |
make stop | Stops services docker-compose -f .docker/docker-compose.yml stop |
make up | Create and start containers docker-compose -f .docker/docker-compose.yml up -d |
make down | Take down and remove all containers docker-compose -f .docker/docker-compose.yml down |
make restart | Restarts services docker-compose -f .docker/docker-compose.yml restart |
make php.sh | PHP terminal docker exec -it --user cakephp <PHP_CONTAINER> sh |
make php.restart | Restarts the PHP container |
make db.sh | DB terminal docker exec -it <DB_CONTAINER> sh |
make db.mysql | MySQL terminal mysql -u root -h 0.0.0.0 -p --port 3307 |
make web.sh | Web terminal docker exec -it <WEB_CONTAINER> sh |
make xdebug.on | Restarts PHP container with xdebug.mode set to debug,coverage |
make xdebug.off | Restarts PHP container with xdebug.mode set to off |
make composer.install | docker exec <PHP_CONTAINER> composer install --no-interaction |
make composer.test | docker exec <PHP_CONTAINER> composer test |
make composer.check | docker exec <PHP_CONTAINER> composer check |
See .docker/README.md for details.
Shell:
make php.shHelper commands:
make composer.install make composer.test make composer.checkSee .docker/README.md for details.
Shell:
make db.shMySQL shell (requires mysql client on your localhost):
make db.mysqlSee .docker/README.md for details.
Shell:
make web.shXdebug is disabled by default. To toggle:
make xdebug.on make xdebug.offXdebug 3's default port is 9003.
Go to File > Settings > Languages & Frameworks > PHP > Servers
- Name:
localhost - Host:
localhost - Port:
8080 - Debugger:
Xdebug - Use path mappings:
Enable
Map your project's app directory to the absolute path on the docker container /srv/app
To completely reinstall delete existing containers and images, then remove the app/ directory and run make init again.