GitHub - opencodeco/phpctl: 🐳 It is a Docker (containers) based development environment for PHP 🐘
Extracto
🐳 It is a Docker (containers) based development environment for PHP 🐘 - GitHub - opencodeco/phpctl: 🐳 It is a Docker (containers) based development environment for PHP 🐘
Contenido
|   | phpctl 🐳 A Docker-based development environment for PHP 🐘 Heavily inspired by opencodeco/hfctl. | 
Introduction
Frictionless PHP Development! Seamlessly run and switch between different versions of PHP, with different installed extensions, thanks to the power of containers.
Take the advantage of goodie commands like phpctl create to start a new project, phpctl repl to start a REPL, phpclt init to initialize a new configuration file and a lot more.
Getting started
Tip
Pro-tip: use it with stack to spin up infrastructure components like MySQL, Redis, RabbitMQ etc.
Requirements
- Git
- Docker
Install
sh <(wget -qO- https://raw.githubusercontent.com/opencodeco/phpctl/main/installer.sh)Update
You can re-run the installer or use the self-update command:
Usage
Then you can use phpctl or pctl with a subcommand:
phpctl <command> [arguments]
For example
phpctl php -m # To show built-in modulesOr
phpctl sh echo 'Hello, World!' # To run arbitrary sh commands inside the container
Command list
Developing
| Command | Description | 
|---|---|
| php | Runs PHP commands ( phpctl php -vorphpctl php -m). | 
| composer | Runs Composer commands ( phpctl composer installorpctl composer validate). | 
| server [port] [directory] | Runs PHP's built-in web-server (default port is 80and default directory is current.). | 
Useful
| Command | Description | 
|---|---|
| phpunit | Runs PHPUnit. | 
| sh [commands] | Starts an interactive Shell session or runs shcommands. | 
| repl | Starts a PHP REPL session (powered by PsySH). | 
| php-cs-fixer | Runs PHP-CS-Fixer. | 
| phpstan | Runs PHPStan. | 
| infection | Runs Infection. | 
| pest | Runs Pest. | 
| pint | Runs Pint. | 
| box | Runs Box. | 
| bundle | Bundles a project into an image and ships it as a single binary file. | 
Scaffolders
| Command | Description | 
|---|---|
| create [framework] [dir] | Creates a new project using the given framework (or package). | 
| init [skeleton] | Initializes a skeleton configuration. | 
Skeletons
- phpunit
- php-cs-fixer
- phpstan
- infection
- box
Helpers
| Command | Description | 
|---|---|
| helporman | Displays a help message. | 
| self-update | Updates phpctliself. | 
| doctor | Inspects the current PHP_VERSIONandPHPCTL_IMAGE. | 
| build | Builds the current Dockerfile(useful for custom images). | 
| images | Shows local phpctlimages. | 
The .phpctlrc file
You can also add a .phpctlrc file at project's root directory with some overrides like:
Environment variables
| Variable | Description | 
|---|---|
| PHP_VERSION | Values can be 82and83 | 
| PHPCTL_IMAGE | Use to name your own custom image | 
For example:
Docker behaviour
Run options
You can also provide any additional Docker run arguments using the args variable.
For example, suppose you want to bind the 9501 port from the running phpctl container to your host,
you can add the following to your .phpctlrc file:
Build options
You can also provide build options to the build command using the build variable:
build=(--build-arg APP_ENV=dev --label phprocks)
Podman
You can use Podman instead of Docker by setting the PHPCTL_RUNTIME variable to podman in your environment variables or at .phpctlrc file.
PHPCTL_RUNTIME=podman phpctl php -v
Modules
For the default Docker image we have the following modules installed (click to expand).
[PHP Modules] Core ctype curl date dom fileinfo filter hash iconv igbinary json libxml mbstring mongodb msgpack mysqlnd openssl pcntl pcov pcre PDO pdo_mysql Phar posix random rdkafka readline redis Reflection session SimpleXML sockets SPL standard swoole tokenizer xml xmlreader xmlwriter zlib
You can always use your custom image with the PHPCTL_IMAGE variable, but feel free to ask for more essential extensions in the issues.
Why it exists?
Tip
After some years struggling with different PHP distributions into different operating systems, dealing with different PHP versions and sets of extensions,
I came out with phpctl to use the power of containers to seamlessly run PHP 🐘 for developement environments.
Contributing
Click here to read the contributing guidelines.
Fuente: GitHub