Skip to content

mathieutu/php-project-launcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 PHP Project Launcher

Set a flexible Docker development environment in a second. This package assumes that you have docker installed, and a bash compatible operating system (actually not tested on Windows).

Set your project services

Just once per project, in its root sources folder.

If the services are already set up for your project you can directly jump to "Launch the services" chapter.

📦 Require the package

$ composer require mathieutu/php-project-launcher

If you do not have php and composer on your computer you can directly use the composer docker container:

$ docker run --rm -ti -v $PWD:/app composer require mathieutu/php-project-launcher

Tip: You should commit here! 😇

🐳 Initialize Docker files

$ ./vendor/bin/ppl init {project-name?}

Tip: You can personalize the project name, or leave empty to use the directory name. It will be used to automatically set your domain names: project-name.test and project-name.localhost by default. To use *.test the developer need to edit its hosts or add a dns server, but *.localhost should work out of the box in unix OS

📝 Choose your flavour

Edit the docker-compose.yml, docker/*, and .env files to fit your needs.

A standard Laravel 5 / Symfony 4 application with a PostgreSQL database should work out of the box after updating your .env file.

See the configuration chapter for all the details.

Tip: You also should commit here 😇!

Launch the services

For each developer on its computer, every time s‧he need to launch the project.

🚀 Launch your project

$ ./vendor/bin/ppl up

Tip: A container of jwilder/nginx-proxy will be launched as nginx-proxy if not found and if ther is the standard 'web' container. It will allow you to use several domain names for your projects.

🎉 Make great things

Update your .env file

With the ppl db command you will see all the values that you need for your .env file:

$ ./vendor/bin/ppl db
From the container:
    DB_CONNECTION=pgsql
    DB_HOST=db
    DB_PORT=5432
    DB_USERNAME=root
    DB_PASSWORD=
    DB_DATABASE=local
    DATABASE_URL=postgresql://root:@db:5432/local
...

See your project in the browser

$ ./vendor/bin/ppl open {path?}

Tip: If you do it quickly after up command, you could see a 502 page. Hold tight and refresh after few seconds, it's just the time your server needs to start!

Tip²: You can customize the domain to open with the $PPL_OPEN env variable in web service.

See your database content in a dedicated software

You can see the public port of your database with:

$ ./vendor/bin/ppl db
...
From outside:
    Type: PostgresSQL
    Host: 127.0.0.1
    Port: 32813
    Username: root
    Password: 
    Database: local
    Url: postgresql://root:@127.0.0.1:32813/local

Use your favorite framework cli tool

You can directly access to cli tools with:

$ ./vendor/bin/ppl artisan
$ ./vendor/bin/ppl console

Tip: because we never save too much time, you can directly them with ppla and pplsf aliases.

Example:

ppla migrate
pplsh doctrine:migrations:migrate

And more...

You can see all you can do with:

$ ppl --help

PHP Project Launcher.

Usage:
  ./vendor/bin/ppl [COMMAND] [ARGS...]
  ./vendor/bin/ppl -h | --help

Commands:
  init               Install the docker files to set the services. Can be used with project name in parameter.
  up | u             Run the project services (run the proxy if not already launched).
  down | d           Stop and remove the project services.
  reload | rl        Down and up the project services (with image rebuild).
  open | o           Open project in web browser.
  database | db      Show the env variables and the database connection information.           
  artisan | a        Execute Laravel Artisan in the web service (with access to DB).
  console | sf       Execute Symfony Console in the web service (with access to DB).
  composer | c       Execute Composer in the web service (with proper version of php).
  yarn | y           Execute Yarn in the web service.
  bash | sh          Open a bash console in the web service.
  exec | e           Execute a command in the web service.
  inspect | i        Show the docker configuration for a service.
  logs               View output from services.
  ps                 List services.
  *                  Fallback on docker-compose binary.

Tip: By adding ./vendor/bin/ to your path, you will be able to directly type ppl instead of ./vendor/bin/ppl. And it will be useful for all the composer binaries, like phpunit! For that, you just have to add export PATH=./vendor/bin:$PATH to your .bashrc, or .zshrc file.

Make the configuration all yours

A standard Laravel/Symfony application with a PostgreSQL database should work out of the box, after having configured your .env file.

Uncomment the mysql example in docker-compose.yml if you prefer to use it.

For now, in the original flavour, you can see the documentation pages of:

Customize your URLs

In the docker-compose.yml file, you will be able to customise several env variables in your web service:

  • $VIRTUAL_HOST which is the list of all the domain names that the proxy will redirect to this container.
  • $PPL_OPEN which is the root url that the command ppl open will use.

TO BE CONTINUED...

Contribute to this project

Please feel free encouraged to make Issues and Pull Requests, for new features and bugs fixes as well as documentation.