Devilbox

用于本地开发的现代Docker LAMP堆栈和MEAN堆栈。(A modern Docker LAMP stack and MEAN stack for local development)

Github stars Tracking Chart

Devilbox

用于本地开发的现代Docker LAMP堆栈和MEAN堆栈

Devilbox 是一个现代的、高度可定制的 dockerized PHP 堆栈,支持完整的 LAMP 和 MEAN,并运行在所有主要平台上。主要目标是方便地切换和组合本地开发所需的任何版本。它支持无限数量的项目,其中 vhost、SSL 证书和 DNS 记录是自动创建的。每个项目都支持反向代理,以确保监听服务器(如 NodeJS)也能被访问。电子邮件包罗万象和流行的开发工具也将为您服务。配置是不必要的,因为一切都已经预先设置好了。

此外,Devilbox 为不同的主机操作系统提供了相同且可重现的开发环境。

要求

Linux OSX Windows Plus Docker

架构

可用堆栈

Devilbox 旨在通过为您提供所需的所有服务,成为本地开发的瑞士军刀。要了解其背后的体系结构并了解可用的结构,请查看以下图表。

最小的堆栈

这是您可以运行的最小的、功能齐全的堆栈

全栈

为了更好地理解实际可能发生的情况,请查看完整的示例

Devilbox artwork

可用 Container

下表列出了 Devilbox 随附的所有集成和预先配置的 Docker 容器。 只有 Web 服务器和 PHP 容器是必需的,所有其他容器都是可选的,不需要启动。

它们中的每一个还具有多种不同版本,以反映您确切的所需环境。

Accel Web App SQL NoSQL Queue / Search ELK Utils
HAProxy Apache PHP MariaDB Memcached RabbitMQ ElasticSearch Bind
Varnish Nginx Python (Flask) MySQL MongoDB Solr Logstash Blackfire
PerconaDB Redis Kibana MailHog
PostgreSQL Ngrok

Documentation: Available Container

用法

快速开始

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

2. Copy C:\devilbox\env-example to C:\devilbox\.env

3. Edit C:\devilbox\.env

4. Open a terminal on Windows and type:


# Start all container
C:\devilbox> docker-compose up
        

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

Selective start

以上将启动所有容器,但是您也可以只启动实际需要的容器。 只需在 docker-compose 命令中指定它们即可实现。

docker-compose up httpd php mysql redis

Documentation: Start only some container

运行不同的版本

每个可连接的容器都有许多不同的版本。 为了选择容器所需的版本,只需编辑 .env 文件并取消注释所选版本。 任何组合都是可能的。

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 latest 3.2
5.5 8.0 10.2 8.0 9.3 4.0 3.4
5.6 10.3 9.4 5.0 3.6
7.0 10.4 9.5 6.0 4.0
7.1 9.6 latest 4.2
7.2 ... latest
7.3 12.0
7.4 12.1
8.0[2] latest

[1]可以使用 PHP 5.2,但尚未正式支持它。Devilbox 内部网不适用于该版本,因为 PHP 5.2 不支持命名空间。 此外,PHP 5.2 仅适用于 Apache 2.4、Nginx 稳定版和 Nginx 主线。它不适用于 Apache 2.2。 使用风险自负。

[2] PHP 8.0 是即将发布的未发行版本的PHP,每天晚上都直接从其官方 git 分支构建而成,以确保您可以利用它们的最新功能。

Documentation: Change container versions

额外服务

除了默认堆栈之外,还可以轻松启用和启动各种其他服务。

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

Documentation: Enable custom container

进入容器

您也可以直接在 php 容器中工作。 只需使用捆绑的脚本 shell.sh(或 Windows 的 shell.bat)。 PS1 将自动填充当前选择的 php 版本。 浏览 Devilbox 目录并键入以下列出的命令:

Linux and MacOS Windows
host> ./shell.sh
devilbox@php-7.0.19 in /shared/httpd $
            
C:\devilbox> shell.bat
devilbox@php-7.0.19 in /shared/httpd $
            

您的项目可以在 /shared/httpd 中找到。 DNS 记录可在 php 容器中自动获得。 所有其他服务也将在 php 容器内的 127.0.0.1 上可用(tricky socat port-forwarding)。

Documentation: Work inside the PHP container | Directory overview

许可

MIT License

Copyright (c) 2016 cytopia


(The first version translated by vz on 2020.08.08)

Main metrics

Overview
Name With Ownercytopia/devilbox
Primary LanguagePHP
Program languagePHP (Language Count: 6)
PlatformDocker, Linux, Mac, Windows
License:MIT License
所有者活动
Created At2016-10-07 11:10:05
Pushed At2024-04-19 13:46:30
Last Commit At2023-01-30 11:21:52
Release Count51
Last Release Namev3.0.0-beta-0.3 (Posted on )
First Release Name0.8-pre (Posted on 2016-11-03 16:15:23)
用户参与
Stargazers Count4.5k
Watchers Count111
Fork Count654
Commits Count1.8k
Has Issues Enabled
Issues Count658
Issue Open Count70
Pull Requests Count326
Pull Requests Open Count15
Pull Requests Close Count34
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Devilbox

Usage |
Architecture |
Community |
Features |
Intranet |
Screenshots |
Contributing |
Logos |
License

Devilbox

Release
Gitter
Discourse
type
License

Build Status
Documentation Status
Build Status
Build Status
Build Status
Build Status
Build Status


Support for valid https out of the box.

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.
Reverse proxies per project are supported to ensure listening server such as NodeJS can also be reached.
Email catch-all and popular development tools will be at your service as well. Configuration is not necessary, as everything is already pre-setup.

Furthermore, the Devilbox provides an identical and reproducible development environment for different host operating systems.

Requirements

Linux
OSX
Windows
Plus
Docker

Architecture

Available Stacks

The Devilbox aims to be a swiss army knife for local development by providing you all the services
you would ever need. To get an idea about the architecture behind it and to also see what's available
have a look at the following diagrams and tables.

Devilbox artwork

Available Container

The following table lists all integrated and pre-configured Docker container shipped by the Devilbox.
Only the webserver and PHP container are mandatory, all others are optional and don't need to be started.

Each of them is also available in multiple different versions in order to reflect your exact desired environment.

Accel Web App SQL NoSQL Queue / Search ELK Utils
HAProxy Apache PHP MariaDB Memcached RabbitMQ ElasticSearch Bind
Varnish Nginx Python (Flask) MySQL MongoDB Solr Logstash Blackfire
PerconaDB Redis Kibana MailHog
PostgreSQL Ngrok

Documentation:
Available Container

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.

Usage

Quick start

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

Selective start

The above will start all containers, you can however also just start the containers you actually need. This is achieved by simply specifying them in the docker-compose command.

docker-compose up httpd php mysql redis

Documentation:
Start only some container

Devilbox

Run different versions

Every single attachable container comes with many different versions. In order to select the desired version for a container, simply edit the .env file and uncomment the version of choice. Any combination is possible.

[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.

[2] PHP 8.0 is an upcoming unreleased versions of PHP, which are directly built out of their official git branches every night to assure you will leverage their latest features.

Documentation:
Change container versions

Additional services

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

Documentation:
Enable custom container

Enter the container

You can also work directly inside the php container. Simply use the bundled scripts shell.sh (or shell.bat for Windows).
The PS1 will automatically be populated with current chosen php version.
Navigate the the Devilbox directory and type the below listed command:

Your projects can be found in /shared/httpd. DNS records are automatically available inside the php container. Also every other service will be available on 127.0.0.1 inside the php container (tricky socat port-forwarding).

Documentation:
Work inside the PHP container |
Directory overview

Quick Video intro

Devilbox setup and workflow
Devilbox email catch-all

Feature overview

The Devilbox has everything setup for you. The only thing you will have to install is Docker and Docker Compose. Virtual hosts and DNS entries will be created automatically, just by adding new project folders.

Documentation:
Devilbox Prerequisites

Features

Documentation:
Setup Auto DNS |
Setup valid HTTPS |
Configure Xdebug |
Customize PHP

Batteries

The following batteries are available in the Devilbox intranet by default:

Documentation:
Devilbox Intranet

Tools

The following tools will assist you on creating new projects easily as well as helping you check your code against guidelines.

Well-known and popular tools will be at your service as well:
















Documentation:
Available Tools

Available 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.

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

PHP modules can be enabled or disabled on demand to reflect the state of your target environment.

Documentation:
Enable/disable PHP modules

Custom PHP Modules

You can also copy any custom modules into mod/(php-fpm)-<VERSION> and add a custom *.ini file to load them.

Supported PHP Frameworks

As far as tested there are no limitations and you can use any Framework or CMS just as you would on your live environment. Below are a few examples of extensively tested Frameworks and CMS:


















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

Supported reverse proxied applications

As far as tested there are no limitations and you can use any application that creates an open port.
These ports will be reverse proxied by the web server and even allow you to use valid HTTPS for them.
By the built-in autostart feature of the Devilbox you can ensure that your application automatically
starts up as soon as you run docker-compose up.



Documentation:
Setup reverse proxy NodeJs |
Setup reverse proxy Sphinx documentation

Intranet overview

The Devilbox comes with a pre-configured intranet on http://localhost and https://localhost. This can be explicitly disabled or password-protected. The intranet will not only show you, the chosen configuration, but also validate the status of the current configuration, such as if DNS records exists (on host and container), are directories properly set-up. Additionally it provides external tools to let you interact with databases and emails.

Documentation:
Devilbox Intranet

Screenshots

A few examples of how the built-in intranet looks like.

Contributing Open Source Helpers

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:

  • Star this project
  • Open up issues for bugs and feature requests
  • Clone this project and submit fixes or features
  • Visit the Devilbox Community Forums for announcements and to help others

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