How to use this template

Create a new project folder

Copy downloaded and extracted folder to a new name:

cp -r docker-php-starterkit my-new-php-app

OR

git clone https://gitlab.iml.unibe.ch/iml-open-source/docker-php-starterkit.git my-new-php-app 

In the new folder remove the docs of the kit and its git repo

cd my-new-php-app && rm -rf docs .git

The initial file structure looks like this:

.
├── docker
│   ├── init.sh                                    << shellscript for initialization
│   ├── init.sh.cfg                                << config file
│   ├── init.sh_not_shared.cfg.dist                << config file template
│   └── templates
│       ├── db-server-my.cnf                       << mysql config
│       ├── docker-compose.yml                     << for docker-compose.yml
│       ├── dot_env                                << for .env of docker-compose.yml
│       ├── php-fpm-Dockerfile                     << PHP-FPM container
│       ├── php-fpm-dockerfile-entrypoint.sh
│       ├── php-fpm-extra-php-config.ini
│       ├── proxy-server-Dockerfile                << Apache httpd proxy
│       ├── proxy-server-dockerfile-entrypoint.sh  
│       ├── proxy-server-my-modules.conf
│       ├── proxy-server-vhost.conf
│       └── readme.md
├── docs
│   :
├── public_html                                    << your webroot for your project
│   └── index.php
└── readme.md

Edit variables and files

  • edit ./docker/init.sh.cfg … and edit
    • APP_NAME=my_new_app
    • optional: set a new port APP_PORT=8001
    • set APP_* variables for packages to install or PHP version
    • set DB_ADD to true or false to say if a database container is needed
    • If a database is needed then set DB_PORT and MYSQL_* variables
  • edit ./docker/templates/vhost_app.conf to describe apache vhost config
  • edit php settings in ./docker/templates/extra-php.ini
  • edit mysql settings in ./docker/templates/my.cnf

First start

  • start init script in the docker folder: ./docker/init.sh
    • use g to remove git data of the starterkit
    • use i for init … it sets an ACL on the ./public_html/ subdir to allow write access for your current user and the apache user in the docker container
    • use t to generate config files from templates with the settings from ./docker/init.sh.cfg
    • use u to bring up the container (OR run docker-compose up -d )

Edit files

  • If the container was started you can …
    • open in your browser http://localhost:8001 to access ./public_html/
    • edit files with the IDE of your choice

Remarks

You can start ./docker/init.sh with a single letter in the interactive menu too, i.e. ./docker/init.sh u to bring up the docker instance.

If you created the config files from templates you can repeat the creation ./docker/init.sh t. Before applying a change you should shutdown your docker instance.