mathieutu / php-project-launcher
A php project launcher with Docker.
Installs: 15 094
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 2
Forks: 2
Open Issues: 1
Language:Shell
pkg:composer/mathieutu/php-project-launcher
README
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:
- jwilder/nginx-proxy: The reverse proxy that allows you to use domain names on your projects.
- richarvey/nginx-php-fpm: The image used to serve the web service. Directly shipped with git, nginx, php, composer, xdebug, etc.
- postgres and mysql databases containers.
- docker and docker-compose tools.
Customize your URLs
In the docker-compose.yml file, you will be able to customise several env variables in your web service:
$VIRTUAL_HOSTwhich is the list of all the domain names that the proxy will redirect to this container.$PPL_OPENwhich is the root url that the commandppl openwill 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.