Nginx, PHP-FPM, MySql, Redis
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist matthew-p/docker-server "@dev"
or add
"matthew-p/docker-server": "@dev"
to the require section of your composer.json
file.
- Add or update section scripts in composer.json:
where "docker/.env-local" relative path to your local env config (will be created in next step).
... "scripts": { "server": "vendor/bin/site-start.sh --env-file=docker/.env-local", "server-run": "vendor/bin/site-run.sh --env-file=docker/.env-local", "server-exec": "vendor/bin/site-exec.sh --env-file=docker/.env-local", // (optional) "server-prod": "vendor/bin/site-aws.sh --env-file=docker/.env-prod" } ...
- Run:
composer server init
. This will create a docker folder in your project root directory. - Change root-path in docker/nginx/conf-dynamic.d/sample.conf
- See supported os and config docker/.env-local according to your operating system
- Run server:
composer server up
- Multiple config:
vendor/bin/site-start.sh --env-file=docker/.env-dev,docker/.env-local
- Use environment, extends, overriding between configs
// Simple usage SERVICES="$SERVICES -f my.yml" // Will be recompiled (bad example) SERVICES="${SERVICES} -f my.yml" // Will be recompiled (good example) SERVICES="${SERVICES_EXTERNAL} -f my.yml"
- Use all environments in docker-compose files
- Overriding, extends docker-compose files
- Run container and execute command:
composer server-run server "ls && top"
- Run command in working container:
composer server-exec server "composer install"
- AWS create/update "Task Definitions"
- Auto update /etc/hosts file on host machine
- Auto create nginx proxies on host machine
- And etc.
-
Configure hosts file:
- Check nginx container IP and add to hosts file:
view "IPAddress" and add to:
docker inspect sample_nginx
172.18.0.4 sample.io (for example)sudo nano /etc/hosts
save and check it. - Open browser and check sample.io
OR see below static network layer
- Check nginx container IP and add to hosts file:
-
Add static network layer (only for Linux)
- Change SERVICES variable in your local env (docker/.env-local) to:
SERVICES="$SERVICES -f docker/docker-compose.common.yml -f docker/docker-compose.static-network.yml"
- Run:
composer server restart
and check it.
- Change SERVICES variable in your local env (docker/.env-local) to:
-
Update package without composer install and depencies
docker run --rm --interactive --volume $PWD:/app composer update --ignore-platform-reqs --no-scripts
That's all. Check it. :)