PHPackages                             gbmcarlos/skellington - 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. gbmcarlos/skellington

ActiveLibrary

gbmcarlos/skellington
=====================

v4.0.0(7y ago)2151[4 PRs](https://github.com/gbmcarlos/skellington/pulls)MITPHPPHP ^7.2

Since Aug 20Pushed 3y agoCompare

[ Source](https://github.com/gbmcarlos/skellington)[ Packagist](https://packagist.org/packages/gbmcarlos/skellington)[ RSS](/packages/gbmcarlos-skellington/feed)WikiDiscussions lumen Synced 5d ago

READMEChangelog (10)Dependencies (2)Versions (32)Used By (0)

What's this?
============

[](#whats-this)

This skeleton allows to have a working Laravel or Lumen application running inside a Docker container completely out of the box, and configurable through environment variables.

Features
--------

[](#features)

- Run as a [Docker](https://docs.docker.com/) container: one dependency, one tool, Docker.
- [Lumen 7](https://lumen.laravel.com/docs/7.x) application.
- Xdebug support
- Run it with Make
    - `make` or `make run` will run the project as web service
    - `make command ARGS={your command}` will execute your arguments as a Artisan command
- Configure the run-time environment with environment variables
    - Debug in your local with `XDEBUG_` env vars

How to install it
-----------------

[](#how-to-install-it)

- `curl -o- -s -L https://gbmcarlos.com/skellington.sh | bash`
- Start working

Setup
=====

[](#setup)

Requirements
------------

[](#requirements)

- Docker

Environment variables
---------------------

[](#environment-variables)

Every project reads its environment variables from the file `src/.env`, which is not tracked in the repository by git. A list of the required environment variables is kept in the file `src/.env.example`.

Crossbow
--------

[](#crossbow)

This project makes use of gbmcarlos/toolkit as a library, which is installed as a git submodule.

Development
-----------

[](#development)

### Web service

[](#web-service)

When working on the web service, use `make` or `make logs`. This script will:

- build the Docker image
- run the Docker container, mounting volumes for the source and vendor folders. This will:
    - make the dependencies (installed only inside the container) visible to your IDE.
    - make all changes on those folders reflect instantly inside the container
- spin up the web server
- tail the output of the container

### Background process

[](#background-process)

When working on a background process, use `make command ARGS={your command}`. This script will do the same as `make logs`, but instead of spinning up the web server, it will run the specified Artisan command with the given options. For example

```
./local/run.sh my-command
```

Configuration environment variables
-----------------------------------

[](#configuration-environment-variables)

These environment variables are used to configure how the project is built and ran, and they are given a default value optimized for production in the Dockerfile. Makefile gives them a default value optimized for local development which overrides the one in the Dockerfile.

ENV VARDefault value (production | local)DescriptionAPP\_PORT80The port Docker will use as the host port in the network bridge. This is the external port, the one you will use to call your app.APP\_DEBUG`true`Use to toggle the application debug configurationAPP\_NAMEName of the project's root folderUsed to name the docker image and docker container.APP\_RELEASECurrent commit hash (`HEAD`) / `latest`Used at build time to persist the environment variable into the image.BASIC\_AUTH\_ENABLED`true` / `false`Enables Basic Authentication with Nginx. If enabled, it will use `htpasswd` with `BASIC_AUTH_USERNAME` and `BASIC_AUTH_PASSWORD` to encrypt with bcrypt (cost 10).BASIC\_AUTH\_USERNAMEadminUsername for the Basic AuthBASIC\_AUTH\_PASSWORD`APP_NAME`\_passwordPassword for the Basic AuthXDEBUG\_ENABLED`false` / `true`Enables Xdebug inside the container.XDEBUG\_REMOTE\_HOSThost.docker.internalUsed as the `xdebug.remote_host` PHP ini configuration value.XDEBUG\_REMOTE\_PORT10000Used as the `xdebug.remote_port` PHP ini configuration value.XDEBUG\_IDE\_KEY`APP_NAME`\_PHPSTORMUsed as the `xdebug.idekey` PHP ini configuration value.```
APP_PORT=8000 BASIC_AUTH_ENABLED=true BASIC_AUTH_USERNAME=user BASIC_AUTH_PASSWORD=secure_password XDEBUG_ENABLED=true make
```

Running commands
----------------

[](#running-commands)

To run a arbitrary command inside your web service container, you can do so with:

```
docker exec -it {container-name} bash -c "{command}"
```

Or you can execute an interactive terminal in the container with:

```
docker exec -it {container-name} bash
```

Installing a new package
------------------------

[](#installing-a-new-package)

When installing a new package let Composer choose the exact version by running `composer require {package}` inside the container (see the "Running commands" section). Then extract the `composer.json` and `composer.lock` from inside the container (see the "Updating dependencies" section).

Updating dependencies
---------------------

[](#updating-dependencies)

To update the dependencies, run `composer update` inside the web service container (see the "Running commands" section). Then extract the `composer.lock` file with:

```
docker cp {container-name}:/var/task/composer.lock .
```

### Updating NPM dependencies (Laravel only)

[](#updating-npm-dependencies-laravel-only)

To update the NPM dependencies, run `npm update` inside the web service container (see the "Running commands" section). Then extract the `package-lock.json` file with:

```
docker cp {container-name}:/var/www/package-lock.json .
```

Then you can copy the result into your `.env` as the value of the variable `APP_KEY`

Xdebug support
--------------

[](#xdebug-support)

Even though the project runs inside a Docker container, it still provides support for debugging with Xdebug. By telling Xdebug the remote location of your IDE and configuring this one to listen to a certain port, they can communicate with one another.

Use the `XDEBUG_` environment variables to configure your project's debugging. The default values on the local start-up scripts are optimized for PhpStorm on Mac.

### Xdebug for PhpStorm on Mac

[](#xdebug-for-phpstorm-on-mac)

Check [this documentation](https://gist.github.com/gbmcarlos/77614789be8a6ecc1dc3aec4b49c07bc) to configure your IDE. Use the `XDEBUG_` and `APP_NAME` environment variables and the path mappings:

- "src": `/var/task/src`
- "vendor": `/opt/vendor`

Technology Stack
----------------

[](#technology-stack)

- [Nginx](http://nginx.org/)
- [PHP 7.4.1](https://php.net/)
- [Xdebug](https://xdebug.org/)
- [Lumen 7](https://lumen.laravel.com/docs/7.x)

License
-------

[](#license)

This project is licensed under the terms of the [MIT license](https://opensource.org/licenses/MIT).

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity68

Established project with proven stability

 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.

###  Release Activity

Cadence

Every ~4 days

Total

20

Last Release

2741d ago

Major Versions

2.4.1 → 3.02018-09-02

v3.3.0 → v4.0.02018-11-13

### Community

Maintainers

![](https://www.gravatar.com/avatar/415c75d596871591847658ed0558bf2ddc12e4a678f005b7d1b9f0082247e719?d=identicon)[gbmcarlos](/maintainers/gbmcarlos)

---

Top Contributors

[![gbmcarlos](https://avatars.githubusercontent.com/u/6390464?v=4)](https://github.com/gbmcarlos "gbmcarlos (131 commits)")

---

Tags

composercomposer-packagedockerdockerfilelaravellaravel56phpphp72skeleton-application

### Embed Badge

![Health badge](/badges/gbmcarlos-skellington/health.svg)

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

###  Alternatives

[anourvalar/eloquent-serialize

Laravel Query Builder (Eloquent) serialization

11320.2M21](/packages/anourvalar-eloquent-serialize)[namu/wirechat

A Laravel Livewire messaging app for teams with private chats and group conversations.

54324.5k](/packages/namu-wirechat)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

135192.6k5](/packages/statamic-rad-pack-runway)

PHPackages © 2026

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