.
├── app
│ ├── controller
│ ├── model
│ └── view
├── composer.json
├── .develtio-runner
│ ├── config.env
│ ├── DEVELTIO_RUNNER.md
│ └── Makefile
├── develtio-runner
│ ├── env
│ │ ├── global.env
│ │ ├── local
│ │ │ ├── config.env
│ │ │ ├── docker-compose-app.yml
│ │ │ ├── docker-compose-tools.yml
│ │ │ └── Dockerfile
│ │ ├── production
│ │ │ ├── config.env
│ │ │ ├── docker-compose-app.yml
│ │ │ └── Dockerfile
│ │ └── staging
│ │ ├── config.env
│ │ ├── docker-compose-app.yml
│ │ └── Dockerfile
│ └── etc
│ └── rc.d
│ ├── container-start
│ ├── container-stop
│ ├── container-stopping
│ └── image-build
├── public
│ └── index.php
├── README.md
└── vendor
# Build
[R] ./.develtio-runner/docker/app/php/Dockerfile (FROM php:7.3-fpm-apache)
only base image, no source code inside
[P] ./develtio-runner/env/local/Dockerfile (FROM develtio-runner-app)
optional, extended base image with the source code
# Start
PROJECT_LANG=php
PROJECT_ENGINE=wordpress
## make start-tool
[R] ./.develtio-runner/docker/core/docker-compose-core.yml (no services, shared networks and volumes)
[R] ./.develtio-runner/docker/tools/docker-compose.yml (global tools - ngrep, tcpdump)
[R] ./.develtio-runner/docker/tools/php/docker-compose.yml (optional, php tools - composer, phpunit)
[R] ./.develtio-runner/docker/tools/wordpress/docker-compose.yml (optional, wordpress tools - wp-cli)
[P] ./develtio-runner/env/local/docker-compose-tools.yml (optional, additional project-level tools)
## make start
[R] ./.develtio-runner/docker/core/docker-compose-core.yml (app service, shared networks and volumes)
[R] ./.develtio-runner/docker/app/wordpress/docker-compose.yml (optional, wordpress-crafted)
[P] ./develtio-runner/env/local/docker-compose-app.yml (optional, project-level extensions to above)
## Configuration load order
[R] ./.develtio-runner/config.env (default variables)
[P] ./develtio-runner/env/global.env (global project variables)
[P] ./develtio-runner/env/local/config.env (per-environment project variables)
> No need to edit [R] files by developers, there is always project-level file in the end
> Add `make ls-tool` - list all available tools (with descriptions)
> Add `make ls` - list all services in the stack
> Runner as submodule hidden under .develtio-runner, locked to specific commit with possibility to upgrade
> Possibility to get runner, set `PROJECT_LANG`, create phpinfo index.php and make start
> Remove start-tool from start-all
> Add `container_name` to lb container, so that multiple instances will be handled w/o error; multiple lbs, if needed at all, need downstream load-balancer, Traefik should do
> Example for second language, Ruby or Node.JS or else