Skip to content

Universal docker server (PHP-FPM/NODE, Nginx, MySql, Redis). Launch your site in 5 steps and <5 min :)

License

Notifications You must be signed in to change notification settings

MatthewPattell/docker-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Universal docker server

Nginx, PHP-FPM, MySql, Redis

Installation

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.

After install package:

  1. Add or update section scripts in composer.json:
    ...
    "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"
    }
    ...
    where "docker/.env-local" relative path to your local env config (will be created in next step).
  2. Run: composer server init. This will create a docker folder in your project root directory.
  3. Change root-path in docker/nginx/conf-dynamic.d/sample.conf
  4. See supported os and config docker/.env-local according to your operating system
  5. Run server: composer server up

Supported OS

Environments && Commands

FEATURES

  • 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.

LIFEHACKS

  • Configure hosts file:

    1. Check nginx container IP and add to hosts file:
      docker inspect sample_nginx
      view "IPAddress" and add to:
      sudo nano /etc/hosts
      172.18.0.4 sample.io (for example)
      save and check it.
    2. Open browser and check sample.io

    OR see below static network layer

  • Add static network layer (only for Linux)

    1. 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"
      
    2. Run: composer server restart and check it.
  • 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. :)