View on GitHub

Devilbox

github.com/cytopia/devilbox

Devilbox

QuickstartInstallUpdateConfigureRunUsageOSBackupsSegurançaFAQ

Reproducable and identical development environment for all host operating systems with zero configuration requirements.

Docker LAMP development stack with valid https support

The Devilbox is a modern and highly customisable dockerized PHP stack supporting full LAMP and MEAN and running on all major platforms. The main goal is to easily switch and combine any version required for local development.

It supports an unlimited number of projects for which vhosts, SSL certificates and DNS records are created automatically. Email catch-all and popular development tools will be at your service as well. Configuration is not necessary, as everything is already pre-setup.

Devilbox

Supported Host OS

Don't worry about switching computers. The devilbox will run on all major operating systems.

Linux support OSX support Windows support

Install, Configure and Start

Documentation: Install the Devilbox | Start the Devilbox | .env file

Your whole development stack is up and running in a few simple steps.

Linux and MacOS Windows
# Get the Devilbox
$ git clone https://github.com/cytopia/devilbox
1. Clone https://github.com/cytopia/devilbox to C:\devilbox with Git for Windows
# Create docker-compose environment file
$ cd devilbox
$ cp env-example .env
2. Copy C:\devilbox\env-example to C:\devilbox\.env
# Edit your configuration
$ vim .env
3. Edit C:\devilbox\.env
# Start all container
$ docker-compose up
# Start all container
C:\devilbox> docker-compose up

Run exactly what you need

Documentation: Change container versions

Choose your required daemons and select a version. Any combination is possible.
This will allow you, to always exactly simulate your production environment locally during development.

Apache Nginx PHP MySQL MariaDB Percona PgSQL Redis Memcached MongoDB
2.2 stable 5.2[1] 5.5 5.5 5.5 9.0 2.8 1.4 2.8
2.4 mainline 5.3 5.6 10.0 5.6 9.1 3.0 1.5 3.0
5.4 5.7 10.1 5.7 9.2 3.2 1.6 3.2
5.5 8.0 10.2 8.0 9.3 4.0 latest 3.4
5.6 10.3 9.4 5.0 3.6
7.0 10.4 9.5 6.0 4.0
7.1 10.5 9.6 latest 4.2
7.2 10.6 ... 4.4
7.3 10.7 12.3 latest
7.4 12.4
8.0 13.0
8.1 latest
8.2[2]

[1] PHP 5.2 is available to use, but it is not officially supported. The Devilbox intranet does not work with this version as PHP 5.2 does not support namespaces. Furthermore PHP 5.2 does only work with Apache 2.4, Nginx stable and Nginx mainline. It does not work with Apache 2.2. Use at your own risk.

Additional services

Documentation: Enable custom container

Additionally to the default stack, there are a variety of other services that can be easily enabled and started.

Python (Flask) Blackfire ELK MailHog Ngrok RabbitMQ Solr HAProxy Varnish
2.7 1.8 5.x.y v1.0.0 2.x 3.6 5 1.x 4
... ... 6.x.y latest 3.7 6 5
3.7 1.18.0 7.x.y latest 7 6
3.8 latest latest latest

Run only what you need

Documentation: Start only some container

You are not forced to load the whole stack everytime. Only bring up what you really need.
It is also possible to add or remove daemons while the stack is already running.

# Load traditional lamp stack only
$ docker-compose up httpd php mysql

# Add redis to the running stack
$ docker-compose up redis

# Stop MySQL from the current stack
$ docker-compose stop mysql

Introduction Videos

Head over to youtube for a quick introduction and see for yourself how easily new projects can be created.

PHP Modules

The devilbox is a development stack, so it is made sure that a lot of PHP modules are available out of the box in order to work with many different frameworks. There will however be slight differences between the versions and especially with HHVM. To see the exact bundled modules for each version visit the corresponding docker repositories on Github:

PHP
  • Core enabled (cannot be disabled): heavy_check_mark
  • Enabled (can be disabled): 🗸
  • Available, but disabled (can be enabled): d
Modules PHP 5.2 PHP 5.3 PHP 5.4 PHP 5.5 PHP 5.6 PHP 7.0 PHP 7.1 PHP 7.2 PHP 7.3 PHP 7.4 PHP 8.0 PHP 8.1 PHP 8.2
amqp 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
apc 🗸 🗸 🗸 🗸
apcu 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
bcmath 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
blackfire d d d d d d d
bz2 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
calendar 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
ctype heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
curl heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
date heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
dba 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
dom heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
enchant 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
ereg heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
exif 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
FFI 🗸 heavy_check_mark heavy_check_mark heavy_check_mark
fileinfo 🗸 heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
filter heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
ftp heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
gd 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
gettext 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
gmp 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
hash heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
iconv heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
igbinary 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
imagick 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
imap 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
interbase 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
intl 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
ioncube d d d d d d d
json heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
ldap 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
libxml heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
mbstring heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
mcrypt 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
memcache 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
memcached 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
mhash heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
mongo 🗸 🗸 🗸 🗸 🗸
mongodb 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
msgpack 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
mysql 🗸 🗸 🗸 🗸 🗸
mysqli 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
mysqlnd heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
OAuth 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
oci8 d d d d d d d d d d d d
openssl heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
pcntl 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
pcre heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
PDO heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
pdo_dblib 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
PDO_Firebird 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
pdo_mysql 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
PDO_OCI d d d d d d d d
pdo_pgsql 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
pdo_sqlite heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
pdo_sqlsrv d d d d d d d d
pgsql 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
phalcon d d d d d d d d d
Phar 🗸 heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
posix heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
pspell 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
psr d d d d d d d d d d d
rdkafka d d d d d d d d d d d d
readline heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
recode heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark 🗸 🗸 🗸 🗸 🗸
redis 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
Reflection heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
session heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
shmop 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
SimpleXML heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
snmp 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
soap 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
sockets 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
sodium heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
solr 🗸 🗸 🗸 🗸 🗸 🗸
SPL heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
SQLite heavy_check_mark heavy_check_mark
sqlite3 heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
sqlsrv d d d d d d d d
ssh2 🗸 🗸 🗸 🗸 🗸
standard heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
swoole d d d d d d d d d d
sysvmsg 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
sysvsem 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
sysvshm 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
tidy 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
tokenizer heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
uploadprogress 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
uuid 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
vips 🗸 🗸 🗸 🗸 🗸
wddx 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
xdebug 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
xlswriter 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
xml heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
xmlreader heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
xmlrpc 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
xmlwriter heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark
xsl 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
yaml 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
Zend OPcache 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
zip 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸 🗸
zlib heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark heavy_check_mark

Email catch-all

Email catch-all

The built-in postfix mailserver is configured to automatically intercept all outgoing emails. This is an important measurement during development to make sure not to accidentally send out real emails. Instead you will be able to see all sent emails in the included intranet mail view. See Intranet section below.

Auto-DNS

Auto-DNS

Creating a new project just requires you to create a new folder on the filesystem. As you probalby don't want to bother with editing your /etc/hosts file everytime, the built-in DNS server will automatically provide the correct DNS records for every project.

Batteries included

Documentation: Available Tools

No need to download external tools. Everything is bundled, up-to-date and available inside the containers.

Adminer phpMyAdmin phpRedMin OpCacheGUI Mail viewer
Adminer phpMyAdmin phpRedMin OpCache GUI Mail viewer
Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox

Supported Frameworks and CMS

There is nothing special about the devilbox, so any framework or CMS that will work with normal LAMP/MEAN stacks will work here as well. However in order to make double sure, a few popular applications have been explicitly tested.

Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox Devilbox

Documentation:
Setup CakePHP | Setup CodeIgniter | Setup CraftCMS | Setup Drupal | Setup Joomla | Setup Laravel | Setup Magento | Setup PhalconPHP | Setup PhotonCMS | Setup PrestaShop | Setup Shopware | Setup Symfony | Setup Typo3 | Setup Wordpress | Setup Yii | Setup Zend

Community

The Devilbox has a lot of features reaching from a simple single-user development environment that works out of the box up to a shared development infrastructure for a corporate network.

In order to be aware about all that features, ensure to have skimmed over the documentation, so you know what can be done and how that might simplify your every-day life. If you ever run into any unforseen issues, feel free to join the chat or visit the forums and get community support quickly.

Documentation

Chat

Forum

Flames

devilbox.readthedocs.io gitter.im/devilbox devilbox.discourse.group github.com/devilbox/flames

Devilbox Intranet

Once the devilbox is up and running, you can visit the bundled intranet on http://localhost.
The intranet is not just a simple dash, it provides many useful tools:

Container Health | DNS Status | Available vHosts | Emails | Databases | Effective Configuration
Devilbox Intranet - Virtual Host view Devilbox Intranet - Database view Devilbox Intranet - Email view

Security

Be aware that the docker service is running with root privileges on your system (like any other webserver for example). The devilbox is using a mix of official docker images and custom images. All integrated containers are available on Github and can be reviewed at any time.

Up-to-dateness

Docker containers are pushed to Docker Hub frequently.
It should be enough for you to pull updated images on a regeular basis.

$ docker-compose pull

However, if a new minor version (PHP for example) has just been released and you want to use it right away, you can simply *git clone* the docker repository and rebuild the container. Each container repository contains a shell script for easy building.

# Download PHP 7.4 repository
$ git clone https://github.com/cytopia/docker-php-fpm-7.4

# Rebuild the container in order to get the latest minor/patch version
$ cd docker-php-fpm-7.4
$ ./build/docker-rebuild.sh

Integration Tests

In order to make sure everything always runs stable and as expected, the devilbox makes heavy use of integration tests. You can head over to Travis-CI and have a look at stable and nightly builds.

Contributing

The Devilbox is still a young project with a long roadmap of features to come. Features are decided by you - the community, so any kind of contribution is welcome.

To increase visibility and bug-free operation:

Additionally you can subscribe to Devilbox on CodeTriage, read up on CONTRIBUTING.md and check the ROADMAP about what is already planned for the near future.

Logos

Logos and banners can be found at devilbox/artwork. Feel free to use or modify them by the terms of their license.

License

MIT License

Copyright (c) 2016 cytopia