Install Cakephp 3 on docker

1. create a folder ‘cakephp’
2. create this docker-compose.yml file:

version: ‘2’
services:
webapp:
image: reinblau/lamp:latest
ports:
– “80:80”
depends_on:
– postgres
– memcached
volumes:
– ~/development/docker/cakephp:/var/www/html
env_file: env_vars/webapp_env_vars.env

memcached:
image: memcached:latest

postgres:
image: postgres:9.3
3. run $ docker-compose up –build -d

[iMac daniel.oraca cakephp]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c83b622a28c1 reinblau/lamp:latest “apache2-foreground” 10 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp cakephp_webapp_1
7195d09fbd10 postgres:9.3 “/docker-entrypoint.s” 11 minutes ago Up 10 minutes 5432/tcp cakephp_postgres_1
db475665040f memcached:latest “docker-entrypoint.sh” 11 minutes ago Up 10 minutes 11211/tcp cakephp_memcached_1

4. exec the shell of lamp container:
$ docker exec -it c83b622a28c1 /bin/bash

5. Navigate to /var/www/html

6. Install composer (https://getcomposer.org/download/)

$ php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
$ php -r “if (hash_file(‘SHA384’, ‘composer-setup.php’) === ‘e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
$ php composer-setup.php
$ php -r “unlink(‘composer-setup.php’);”

7. $ mv composer.phar /usr/local/bin/composer

8. composer self-update && composer create-project –prefer-dist cakephp/app my_app_name

9. install vim:
$ apt-get update
$ apt-get install vim

10. vim /etc/apache2/sites-enabled/000-default.conf

11. Change DocumentRoot /var/www/html/{{my_app_name}}

12. $ service apache2 reload

 

env_vars/webapp_env_vars.env file contains this:

DB_HOST=postgres
DB_PORT=5432
DB_USER=some_cool_dev
DB_PASSWORD=OMG_PLS_K33P_4_S3CRET
MEMCACHED_HOST=memcached
MEMCACHED_PORT=11211
SOME_VARIABLE_MY_WEBAPP_READS=a_value_i_use_to_configure_it

Leave a comment