Skip to content

cnizzardini/cakephp-docker

Repository files navigation

🍰 CakePHP Docker

Build CakePHP Docker Kubernetes PHP NGINX MySQL

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.

Dependencies:

Service Host:Port Docker Host Image
PHP8.2-FPM w/ Xdebug 3 - php cnizzardini/php-fpm-alpine:8.2-latest
NGINX 1.19 localhost:8080 web nginx:1.19-alpine
MySQL 8 localhost:3607 db library/mysql:8

Installation

Fork and clone this repository then run:

make init

That'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 init and make init.nocache output interactively, while make start and make up do not.

Mac Notes

  1. Change your SHELL in the Makefile to /bin/zsh. This improves various output from the Makefile such as emoji's.

  2. Mac ships with an older version of sed so install gnu-sed for some targets in the Makefile:

brew install gnu-sed

Then update sed to gsed in the Makefile.

Usage

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

PHP

See .docker/README.md for details.

Shell:

make php.sh

Helper commands:

make composer.install
make composer.test
make composer.check

MySQL

See .docker/README.md for details.

Shell:

make db.sh

MySQL shell (requires mysql client on your localhost):

make db.mysql

NGINX

See .docker/README.md for details.

Shell:

make web.sh

Xdebug

Xdebug is disabled by default. To toggle:

make xdebug.on
make xdebug.off

PHPStorm + Xdebug

Xdebug 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

Reinstall

To completely reinstall delete existing containers and images, then remove the app/ directory and run make init again.