PHPackages                             mathieutu/php-project-launcher - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. mathieutu/php-project-launcher

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

mathieutu/php-project-launcher
==============================

A php project launcher with Docker.

v0.1.1(6y ago)815.3k2[1 issues](https://github.com/mathieutu/php-project-launcher/issues)MITShell

Since Nov 29Pushed 6y ago2 watchersCompare

[ Source](https://github.com/mathieutu/php-project-launcher)[ Packagist](https://packagist.org/packages/mathieutu/php-project-launcher)[ RSS](/packages/mathieutu-php-project-launcher/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (6)DependenciesVersions (7)Used By (0)

🚀 PHP Project Launcher
======================

[](#-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
-------------------------

[](#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](#launch-the-services)" chapter.

### 📦 Require the package

[](#-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

[](#-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](https://medium.com/@narakuw/brew-install-dnsmasq-in-macos-sierra-26021c824be8), but `*.localhost` should work out of the box in unix OS*

### 📝 Choose your flavour

[](#-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](#update-your-env-file).

See the [configuration chapter](#make-the-configuration-all-yours) for all the details.

*Tip: You also should commit here 😇!*

Launch the services
-------------------

[](#launch-the-services)

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

### 🚀 Launch your project

[](#-launch-your-project)

```
$ ./vendor/bin/ppl up
```

*Tip: A container of [jwilder/nginx-proxy](https://github.com/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
-------------------

[](#-make-great-things)

### Update your `.env` file

[](#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

[](#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

[](#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

[](#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...

[](#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
--------------------------------

[](#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](https://hub.docker.com/r/jwilder/nginx-proxy/): The reverse proxy that allows you to use domain names on your projects.
- [richarvey/nginx-php-fpm](https://hub.docker.com/r/richarvey/nginx-php-fpm/): The image used to serve the web service. Directly shipped with git, nginx, php, composer, xdebug, etc.
- [postgres](https://hub.docker.com/_/postgres/) and [mysql](https://hub.docker.com/_/mysql/) databases containers.
- [docker](https://docs.docker.com/get-started/) and [docker-compose](https://docs.docker.com/compose/overview/) tools.

### Customize your URLs

[](#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
--------------------------

[](#contribute-to-this-project)

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

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 95.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~92 days

Recently: every ~115 days

Total

6

Last Release

2266d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/11351322?v=4)[Mathieu TUDISCO](/maintainers/mathieutu)[@mathieutu](https://github.com/mathieutu)

---

Top Contributors

[![mathieutu](https://avatars.githubusercontent.com/u/11351322?v=4)](https://github.com/mathieutu "mathieutu (23 commits)")[![Gurakh](https://avatars.githubusercontent.com/u/6770704?v=4)](https://github.com/Gurakh "Gurakh (1 commits)")

### Embed Badge

![Health badge](/badges/mathieutu-php-project-launcher/health.svg)

```
[![Health](https://phpackages.com/badges/mathieutu-php-project-launcher/health.svg)](https://phpackages.com/packages/mathieutu-php-project-launcher)
```

###  Alternatives

[deployer/deployer

Deployment Tool

11.1k25.4M207](/packages/deployer-deployer)[appwrite/server-ce

End to end backend server for frontend and mobile apps.

55.3k84.2k](/packages/appwrite-server-ce)[pragmarx/health

Laravel Server &amp; App Health Monitor and Notifier

2.0k1.0M2](/packages/pragmarx-health)[felixfbecker/language-server-protocol

PHP classes for the Language Server Protocol

22476.7M6](/packages/felixfbecker-language-server-protocol)[heroku/heroku-buildpack-php

Toolkit for starting a PHP application locally, with or without foreman, using the same config for PHP and Apache2/Nginx as on Heroku

8161.3M10](/packages/heroku-heroku-buildpack-php)[tiamo/phpas2

PHPAS2 is a php-based implementation of the EDIINT AS2 standard

4674.7k](/packages/tiamo-phpas2)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
