PHPackages                             ebarbeito/php - 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. ebarbeito/php

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

ebarbeito/php
=============

Skeleton to bootstrap plain PHP projects with docker

00MakefileCI failing

Since May 30Pushed 5y ago1 watchersCompare

[ Source](https://github.com/ebarbeito/php)[ Packagist](https://packagist.org/packages/ebarbeito/php)[ RSS](/packages/ebarbeito-php/feed)WikiDiscussions master Synced 5d ago

READMEChangelogDependenciesVersions (1)Used By (0)

ebarbeito/php
=============

[](#ebarbeitophp)

> Skeleton to bootstrap plain PHP projects with docker

Use this skeleton to create a fresh PHP project without writing the common boilerplate that is often needed in order to start from scratch.

The project is intended to use with the following development environment:

- UNIX-like as operating system
- Docker and Docker compose
- GNU Make

These are not required, but highly recommended. It will allow you not to have to install locally anything, such as PHP by itself, nor Composer, nor PHPUnit, nor a web server, etc. The idea is executing all of this as a *dockerized environment*.

Start a new project
-------------------

[](#start-a-new-project)

With `docker` installed, create your new project:

```
docker run --rm -it -v $(pwd):/app \
  composer create-project ebarbeito/php project-name

```

Once created, you can start by customizing the `composer.json` file, taking a look into the `bin/` scripts, or the prepared tasks inside the `Makefile`

```
$ cd project-name
$ tree -f -I "README.md" .
.
├── ./Makefile
├── ./bin
│   ├── ./bin/composer
│   ├── ./bin/php
│   ├── ./bin/phpunit
│   └── ./bin/run
├── ./composer.json
├── ./config
│   ├── ./config/composer
│   │   └── ./config/composer/Dockerfile
│   ├── ./config/fpm
│   │   ├── ./config/fpm/Dockerfile
│   │   └── ./config/fpm/conf.d
│   │       └── ./config/fpm/conf.d/ext-xdebug.ini
│   └── ./config/nginx
│       └── ./config/nginx/site.conf
├── ./docker-compose.yml
├── ./phpunit.xml.dist
├── ./public
│   └── ./public/index.php
├── ./src
├── ./tests
│   ├── ./tests/Functional
│   │   └── ./tests/Functional/DummyFunctionalSuiteTest.php
│   ├── ./tests/Integration
│   │   └── ./tests/Integration/DummyIntegrationSuiteTest.php
│   └── ./tests/Unit
│       └── ./tests/Unit/DummyUnitSuiteTest.php
└── ./var

```

bin/ scripts
------------

[](#bin-scripts)

Due to not having installed any development tool (only Docker), the aim of this scripts is simulate the real commands.

**The ./bin/run script**

`./bin/run` is just the wrapper around the command `docker-compose run`. So, each time you execute it, you are running `docker-compose run` indeed.

```
./bin/run  [arguments]

```

The "command" is a service defined in `docker-compose.yml`

- `./bin/run composer [arguments]`: To use composer
- `./bin/run phpunit [arguments]`: To use phpunit
- `./bin/run php [arguments]`: To use php

**The other scripts**

The rest of the commands relies in `./bin/run` to do their job. They make the same, but with less verbosity.

- `./bin/composer [arguments]`: To use composer
- `./bin/phpunit [arguments]`: To use phpunit
- `./bin/php [arguments]`: To use php

So, instead to use a global `php` command (or a `composer` one), this scripts are a replacement to be used in the same way as usual.

Makefile tasks
--------------

[](#makefile-tasks)

...

Docker compose services
-----------------------

[](#docker-compose-services)

...

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/4ebcf5b7f338817798a6d557844f069a8e24b89f56fa9261abcb2f2a089462f8?d=identicon)[ebarbeito](/maintainers/ebarbeito)

---

Top Contributors

[![ebarbeito](https://avatars.githubusercontent.com/u/185554?v=4)](https://github.com/ebarbeito "ebarbeito (17 commits)")

---

Tags

dockerdocker-composephpphp-skeletonskeleton

### Embed Badge

![Health badge](/badges/ebarbeito-php/health.svg)

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

###  Alternatives

[deployer/deployer

Deployment Tool

11.0k25.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)
