mirror of
https://github.com/cytopia/devilbox.git
synced 2025-05-31 14:40:55 +00:00
Merge pull request #44 from cytopia/DVL-009
DVL-009 Adding Redis docker container
This commit is contained in:
commit
8346db59a3
@ -81,8 +81,17 @@ function loadClass($class) {
|
|||||||
$_LOADED_LIBS[$class] = \devilbox\Postgres::getInstance($Docker->getEnv('POSTGRES_USER'), $Docker->getEnv('POSTGRES_PASSWORD'), $POSTGRES_HOST_ADDR);
|
$_LOADED_LIBS[$class] = \devilbox\Postgres::getInstance($Docker->getEnv('POSTGRES_USER'), $Docker->getEnv('POSTGRES_PASSWORD'), $POSTGRES_HOST_ADDR);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// Get optional docker classes
|
||||||
default:
|
default:
|
||||||
exit('Class does not exist: '.$class);
|
// Redis
|
||||||
|
if ($class == 'Redis' && loadClass('Docker')->getEnv('COMPOSE_OPTIONAL') == 1) {
|
||||||
|
require $LIB_DIR . DIRECTORY_SEPARATOR . $class . '.php';
|
||||||
|
$_LOADED_LIBS[$class] = \devilbox\Redis::getInstance('redis');
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
exit('Class does not exist: '.$class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $_LOADED_LIBS[$class];
|
return $_LOADED_LIBS[$class];
|
||||||
}
|
}
|
||||||
|
49
.devilbox/www/htdocs/db_redis.php
Normal file
49
.devilbox/www/htdocs/db_redis.php
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?php require '../config.php'; ?>
|
||||||
|
<?php if (loadClass('Docker')->getEnv('COMPOSE_OPTIONAL') != 1) {
|
||||||
|
header('Location: /index.php');
|
||||||
|
exit(0);
|
||||||
|
} ?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<?php require '../include/head.php'; ?>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php require '../include/navbar.php'; ?>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<h1>Redis Keys</h1>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
|
||||||
|
<table class="table table-striped ">
|
||||||
|
<thead class="thead-inverse ">
|
||||||
|
<tr>
|
||||||
|
<th>Key</th>
|
||||||
|
<th>Value</th>
|
||||||
|
</th>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach (loadClass('Redis')->getKeys() as $key => $value): ?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $key;?></td>
|
||||||
|
<td><?php print_r($value);?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div><!-- /.container -->
|
||||||
|
|
||||||
|
<?php require '../include/footer.php'; ?>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -316,6 +316,74 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ################################################################################ -->
|
||||||
|
<!-- ### -->
|
||||||
|
<!-- ### OPTIONAL DOCKER CONTAINER MOUNTS-->
|
||||||
|
<!-- ### -->
|
||||||
|
<!-- ################################################################################ -->
|
||||||
|
<?php if ($Docker->getEnv('COMPOSE_OPTIONAL') == 1): ?>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<h2 class="text-xs-center">Additional Docker container</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<!-- ############################################################ -->
|
||||||
|
<!-- Redis Docker Circle -->
|
||||||
|
<!-- ############################################################ -->
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="circles">
|
||||||
|
<div>
|
||||||
|
<div class="bg-danger">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h3><?php echo loadClass('Redis')->getVersion();?></h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br/><br/>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<!-- ############################################################ -->
|
||||||
|
<!-- Redis Docker -->
|
||||||
|
<!-- ############################################################ -->
|
||||||
|
<div class="col-md-3">
|
||||||
|
<table class="table table-striped table-sm font-small">
|
||||||
|
<thead class="thead-inverse">
|
||||||
|
<tr>
|
||||||
|
<th colspan="2">Redis docker</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>IP</th>
|
||||||
|
<td><?php echo gethostbyname('redis');?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Hostname</th>
|
||||||
|
<td><?php echo 'redis';?></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
@ -435,6 +503,40 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- ################################################################################ -->
|
||||||
|
<!-- ### -->
|
||||||
|
<!-- ### OPTIONAL DOCKER CONTAINER MOUNTS-->
|
||||||
|
<!-- ### -->
|
||||||
|
<!-- ################################################################################ -->
|
||||||
|
<?php if ($Docker->getEnv('COMPOSE_OPTIONAL') == 1): ?>
|
||||||
|
<div class="row">
|
||||||
|
<!-- ############################################################ -->
|
||||||
|
<!-- Redis Docker Mounts -->
|
||||||
|
<!-- ############################################################ -->
|
||||||
|
<div class="col-md-3">
|
||||||
|
<table class="table table-striped table-sm font-small">
|
||||||
|
<thead class="thead-inverse">
|
||||||
|
<tr>
|
||||||
|
<th>Redis docker</th>
|
||||||
|
<th>host</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>Log directory</th>
|
||||||
|
<td>./log</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|
||||||
</div><!-- /.container -->
|
</div><!-- /.container -->
|
||||||
|
|
||||||
<?php require '../include/footer.php'; ?>
|
<?php require '../include/footer.php'; ?>
|
||||||
|
49
.devilbox/www/htdocs/redisinfo.php
Normal file
49
.devilbox/www/htdocs/redisinfo.php
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?php require '../config.php'; ?>
|
||||||
|
<?php $Docker = loadClass('Docker'); ?>
|
||||||
|
<?php if ($Docker->getEnv('COMPOSE_OPTIONAL') != 1 ) {
|
||||||
|
header('Location: /index.php');
|
||||||
|
exit(0);
|
||||||
|
} ?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<?php require '../include/head.php'; ?>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php require '../include/navbar.php'; ?>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<h1>Redis Info</h1>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead class="thead-inverse">
|
||||||
|
<tr>
|
||||||
|
<th>Variable</th>
|
||||||
|
<th>Value</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach (loadClass('Redis')->getInfo() as $key => $val): ?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $key;?></td>
|
||||||
|
<td class="break-word"><code><?php echo $val;?></code></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div><!-- /.container -->
|
||||||
|
|
||||||
|
<?php require '../include/footer.php'; ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
216
.devilbox/www/include/lib/Redis.php
Normal file
216
.devilbox/www/include/lib/Redis.php
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
<?php
|
||||||
|
namespace devilbox;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @requires devilbox::Logger
|
||||||
|
*/
|
||||||
|
class Redis
|
||||||
|
{
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
*
|
||||||
|
* Statics
|
||||||
|
*
|
||||||
|
*********************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Redis instance
|
||||||
|
* @var Redis|null
|
||||||
|
*/
|
||||||
|
protected static $instance = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Singleton Instance getter.
|
||||||
|
*
|
||||||
|
* @param string $user Username
|
||||||
|
* @param string $pass Password
|
||||||
|
* @param string $host Host
|
||||||
|
* @return object|null
|
||||||
|
*/
|
||||||
|
public static function getInstance($host = null)
|
||||||
|
{
|
||||||
|
if (!isset(static::$instance)) {
|
||||||
|
static::$instance = new static($host);
|
||||||
|
}
|
||||||
|
// If current Redis instance was unable to connect
|
||||||
|
if (!static::$instance) {
|
||||||
|
loadClass('Logger')->error('Instance has errors:' . "\r\n" . var_export(static::$instance, true) . "\r\n");
|
||||||
|
//return null;
|
||||||
|
}
|
||||||
|
return static::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Connect to Redis
|
||||||
|
*
|
||||||
|
* @param string $err Reference to error message
|
||||||
|
* @param string $host Redis hostname
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public static function testConnection(&$err, $host)
|
||||||
|
{
|
||||||
|
$err = false;
|
||||||
|
|
||||||
|
// Silence errors and try to connect
|
||||||
|
error_reporting(0);
|
||||||
|
$redis = new \Redis();
|
||||||
|
|
||||||
|
if (!$redis->connect($host, 6379)) {
|
||||||
|
$err = 'Failed to connect to Redis host on '.$host.': ' .$redis->getLastError();
|
||||||
|
error_reporting(-1);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
error_reporting(-1);
|
||||||
|
$redis->close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
*
|
||||||
|
* Private Variables
|
||||||
|
*
|
||||||
|
*********************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Redis instance
|
||||||
|
* @var object|null
|
||||||
|
*/
|
||||||
|
private $_redis = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Connection error string
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $_connect_error = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Connection error code
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
private $_connect_errno = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error string
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $_error = '';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error code
|
||||||
|
* @var integer
|
||||||
|
*/
|
||||||
|
private $_errno = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
*
|
||||||
|
* Construct/Destructor
|
||||||
|
*
|
||||||
|
*********************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use singleton getInstance() instead.
|
||||||
|
*
|
||||||
|
* @param string $user Username
|
||||||
|
* @param string $pass Password
|
||||||
|
* @param string $host Host
|
||||||
|
*/
|
||||||
|
public function __construct($host)
|
||||||
|
{
|
||||||
|
// Silence errors and try to connect
|
||||||
|
error_reporting(0);
|
||||||
|
$redis = new \Redis();
|
||||||
|
|
||||||
|
if (!$redis->connect($host, 6379)) {
|
||||||
|
$this->_connect_error = 'Failed to connect to Redis host on '.$host.': ' .$redis->getLastError();
|
||||||
|
$this->_connect_errno = 1;
|
||||||
|
loadClass('Logger')->error($this->_connect_error);
|
||||||
|
} else {
|
||||||
|
$this->_redis = $redis;
|
||||||
|
}
|
||||||
|
error_reporting(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destructor
|
||||||
|
*/
|
||||||
|
public function __destruct()
|
||||||
|
{
|
||||||
|
if ($this->_redis) {
|
||||||
|
$this->_redis->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
*
|
||||||
|
* Redis Select functions
|
||||||
|
*
|
||||||
|
*********************************************************************************/
|
||||||
|
|
||||||
|
public function getVersion()
|
||||||
|
{
|
||||||
|
$info = $this->_redis->info();
|
||||||
|
return 'Redis '.$info['redis_version'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getInfo()
|
||||||
|
{
|
||||||
|
return $this->_redis->info('all');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getKeys()
|
||||||
|
{
|
||||||
|
return $this->_redis->keys('*');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
*
|
||||||
|
* MySQL Error functions
|
||||||
|
*
|
||||||
|
*********************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return connection error message.
|
||||||
|
*
|
||||||
|
* @return string Error message
|
||||||
|
*/
|
||||||
|
public function getConnectError()
|
||||||
|
{
|
||||||
|
return $this->_connect_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return connection errno code.
|
||||||
|
*
|
||||||
|
* @return integer Error code
|
||||||
|
*/
|
||||||
|
public function getConnectErrno()
|
||||||
|
{
|
||||||
|
return $this->_connect_errno;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return error message.
|
||||||
|
*
|
||||||
|
* @return string Error message
|
||||||
|
*/
|
||||||
|
public function getError()
|
||||||
|
{
|
||||||
|
return $this->_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return errno code.
|
||||||
|
*
|
||||||
|
* @return integer Error code
|
||||||
|
*/
|
||||||
|
public function getErrno()
|
||||||
|
{
|
||||||
|
return $this->_errno;
|
||||||
|
}
|
||||||
|
}
|
@ -28,6 +28,14 @@
|
|||||||
<a class="nav-link" href="<?php echo $file == $current ? '#' : '/'.$file;?>"><?php echo $name;?><?php echo $file == $current ? ' <span class="sr-only">(current)</span>' : '';?></a>
|
<a class="nav-link" href="<?php echo $file == $current ? '#' : '/'.$file;?>"><?php echo $name;?><?php echo $file == $current ? ' <span class="sr-only">(current)</span>' : '';?></a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<?php if (loadClass('Docker')->getEnv('COMPOSE_OPTIONAL') == 1): ?>
|
||||||
|
<?php $file = 'db_redis.php'; $name = 'Redis DB';?>
|
||||||
|
<li class="nav-item <?php echo $file == $current ? 'active' : '';?>">
|
||||||
|
<a class="nav-link" href="<?php echo $file == $current ? '#' : '/'.$file;?>"><?php echo $name;?><?php echo $file == $current ? ' <span class="sr-only">(current)</span>' : '';?></a>
|
||||||
|
</li>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|
||||||
<?php $file = 'mail.php'; $name = 'Emails';?>
|
<?php $file = 'mail.php'; $name = 'Emails';?>
|
||||||
<li class="nav-item <?php echo $file == $current ? 'active' : '';?>">
|
<li class="nav-item <?php echo $file == $current ? 'active' : '';?>">
|
||||||
<a class="nav-link" href="<?php echo $file == $current ? '#' : '/'.$file;?>"><?php echo $name;?><?php echo $file == $current ? ' <span class="sr-only">(current)</span>' : '';?></a>
|
<a class="nav-link" href="<?php echo $file == $current ? '#' : '/'.$file;?>"><?php echo $name;?><?php echo $file == $current ? ' <span class="sr-only">(current)</span>' : '';?></a>
|
||||||
@ -41,6 +49,9 @@
|
|||||||
'mysqlinfo.php' => 'MySQL info',
|
'mysqlinfo.php' => 'MySQL info',
|
||||||
'postgresinfo.php' => 'PostgreSQL info'
|
'postgresinfo.php' => 'PostgreSQL info'
|
||||||
);
|
);
|
||||||
|
if (loadClass('Docker')->getEnv('COMPOSE_OPTIONAL') == 1) {
|
||||||
|
$files['redisinfo.php'] = 'Redis info';
|
||||||
|
}
|
||||||
$active = (in_array($script, array_keys($files))) ? 'active' : '';
|
$active = (in_array($script, array_keys($files))) ? 'active' : '';
|
||||||
?>
|
?>
|
||||||
<li class="nav-item dropdown <?php echo $active;?>">
|
<li class="nav-item dropdown <?php echo $active;?>">
|
||||||
|
34
README.md
34
README.md
@ -52,10 +52,20 @@ $ cp env-example .env
|
|||||||
# Edit your configuration
|
# Edit your configuration
|
||||||
$ vim .env
|
$ vim .env
|
||||||
|
|
||||||
# Start the dockers
|
# Start the containers (base-stack)
|
||||||
$ docker-compose up
|
$ docker-compose up
|
||||||
|
|
||||||
|
# Or instead of the above base-stack, you can also additionally load the
|
||||||
|
# optional stack.
|
||||||
|
# Use this command instead:
|
||||||
|
$ docker-compose -f docker-compose.optional.yml up
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Updates
|
||||||
|
|
||||||
|
In case you update this repository locally on the master branch (e.g.: `git pull origin master`), make sure to repull all docker containers as they very likely have also been up updated.
|
||||||
|
Otherwise you might run into problems.
|
||||||
|
|
||||||
[What is the `.env` file?](https://docs.docker.com/compose/env-file/)
|
[What is the `.env` file?](https://docs.docker.com/compose/env-file/)
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
@ -75,8 +85,15 @@ Select your prefered setup.
|
|||||||
|
|
||||||
No need to install and configure different versions locally. Simply choose your required LAMP/LEMP stack combination during startup and it is up and running instantly.
|
No need to install and configure different versions locally. Simply choose your required LAMP/LEMP stack combination during startup and it is up and running instantly.
|
||||||
|
|
||||||
|
**Note:** Some docker container combinations might not work well. See the overall build-matrix for possible problems: \[ [](https://travis-ci.org/cytopia/devilbox) \]
|
||||||
|
|
||||||
**Base stack**
|
**Base stack**
|
||||||
|
|
||||||
|
If you only want to use the base stack, use `docker-compose.yml` (default):
|
||||||
|
```shell
|
||||||
|
$ docker-compose up
|
||||||
|
```
|
||||||
|
|
||||||
| Webserver | MySQL | PostgreSQL | PHP |
|
| Webserver | MySQL | PostgreSQL | PHP |
|
||||||
|-----------|-------|------------|-----|
|
|-----------|-------|------------|-----|
|
||||||
| [](https://travis-ci.org/cytopia/docker-apache-2.2) [Apache 2.2](https://github.com/cytopia/docker-apache-2.2) | [](https://travis-ci.org/cytopia/docker-mysql-5.5) [MySQL 5.5](https://github.com/cytopia/docker-mysql-5.5) | [](https://travis-ci.org/docker-library/postgres/branches) [PgSQL 9.2](https://hub.docker.com/_/postgres/) | [](https://travis-ci.org/cytopia/docker-php-fpm-5.4) [PHP 5.4](https://github.com/cytopia/docker-php-fpm-5.4) |
|
| [](https://travis-ci.org/cytopia/docker-apache-2.2) [Apache 2.2](https://github.com/cytopia/docker-apache-2.2) | [](https://travis-ci.org/cytopia/docker-mysql-5.5) [MySQL 5.5](https://github.com/cytopia/docker-mysql-5.5) | [](https://travis-ci.org/docker-library/postgres/branches) [PgSQL 9.2](https://hub.docker.com/_/postgres/) | [](https://travis-ci.org/cytopia/docker-php-fpm-5.4) [PHP 5.4](https://github.com/cytopia/docker-php-fpm-5.4) |
|
||||||
@ -88,17 +105,20 @@ No need to install and configure different versions locally. Simply choose your
|
|||||||
| | [](https://travis-ci.org/cytopia/docker-mariadb-10.1) [MariaDB 10.1](https://github.com/cytopia/docker-mariadb-10.1) | |
|
| | [](https://travis-ci.org/cytopia/docker-mariadb-10.1) [MariaDB 10.1](https://github.com/cytopia/docker-mariadb-10.1) | |
|
||||||
| | [](https://travis-ci.org/cytopia/docker-mariadb-10.2) [MariaDB 10.2](https://github.com/cytopia/docker-mariadb-10.2) | |
|
| | [](https://travis-ci.org/cytopia/docker-mariadb-10.2) [MariaDB 10.2](https://github.com/cytopia/docker-mariadb-10.2) | |
|
||||||
|
|
||||||
<sub>**Incompatible choices:**<sub><br/>
|
|
||||||
<sub>- Apache 2.2 and HHVM do not work together</sub>
|
|
||||||
|
|
||||||
**Optional NoSQL stack**
|
**Optional NoSQL stack**
|
||||||
|
|
||||||
|
In order to also use the docker containers below, use the `docker-compose.optional.yml` instead:
|
||||||
|
```shell
|
||||||
|
$ docker-compose -f docker-compose.optional.yml up
|
||||||
|
```
|
||||||
|
|
||||||
| Cassandra | CouchDB | Memcached | MongoDB | Redis |
|
| Cassandra | CouchDB | Memcached | MongoDB | Redis |
|
||||||
|-----------|---------|-----------|---------|-------|
|
|-----------|---------|-----------|---------|-------|
|
||||||
| Cassandra 2.1 | CouchDB 1.6 | Memcached latest | MongoDB 2.6 | Redis 2.8 |
|
| Cassandra 2.1 | CouchDB 1.6 | Memcached latest | MongoDB 2.6 | [](https://travis-ci.org/docker-library/redis/branches) [Redis 2.8](https://github.com/docker-library/redis) |
|
||||||
| Cassandra 2.2 | CouchDB 2.0 | | MongoDB 3.0 | Redis 3.0 |
|
| Cassandra 2.2 | CouchDB 2.0 | | MongoDB 3.0 | [](https://travis-ci.org/docker-library/redis/branches) [Redis 3.0](https://github.com/docker-library/redis) |
|
||||||
| Cassandra 3.0 | | | MongoDB 3.2 | Redis 3.2 |
|
| Cassandra 3.0 | | | MongoDB 3.2 | [](https://travis-ci.org/docker-library/redis/branches) [Redis 3.2](https://github.com/docker-library/redis) |
|
||||||
| | | | MongoDB 3.4 | Redis unstable |
|
| | | | MongoDB 3.4 | |
|
||||||
|
|
||||||
<sub>**Note:** Entries without links or without build-status are not yet available, but are coming soon. See [ROADMAP](https://github.com/cytopia/devilbox/issues/23) for tasks and upcoming features.</sub>
|
<sub>**Note:** Entries without links or without build-status are not yet available, but are coming soon. See [ROADMAP](https://github.com/cytopia/devilbox/issues/23) for tasks and upcoming features.</sub>
|
||||||
|
|
||||||
|
352
docker-compose.optional.yml
Normal file
352
docker-compose.optional.yml
Normal file
@ -0,0 +1,352 @@
|
|||||||
|
##
|
||||||
|
## -------------------------
|
||||||
|
## | D E V I L S T A C K |
|
||||||
|
## -------------------------
|
||||||
|
##
|
||||||
|
## Local LAMP/LEMP stack
|
||||||
|
##
|
||||||
|
##
|
||||||
|
##
|
||||||
|
##
|
||||||
|
##
|
||||||
|
## -- DO NOT EDIT THIS FILE --
|
||||||
|
##
|
||||||
|
## Edit '.env' for configuration.
|
||||||
|
##
|
||||||
|
## If '.env' does not exist, copy 'env-example' to '.env'
|
||||||
|
## $ cp env-example .env
|
||||||
|
##
|
||||||
|
|
||||||
|
|
||||||
|
version: '2'
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# SERVICES
|
||||||
|
################################################################################
|
||||||
|
services:
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# HTTP
|
||||||
|
# ----------------------------------------
|
||||||
|
httpd:
|
||||||
|
# TODO: remove latest, once it is ready for the next release
|
||||||
|
image: cytopia/${HTTPD_SERVER}:latest
|
||||||
|
|
||||||
|
# Manually build via `docker-compose build`
|
||||||
|
#build:
|
||||||
|
#context: https://github.com/cytopia/docker-${HTTPD_SERVER}.git#1
|
||||||
|
# context: https://github.com/cytopia/docker-${HTTPD_SERVER}.git
|
||||||
|
|
||||||
|
environment:
|
||||||
|
|
||||||
|
# Show all executed commands during docker entrypoint?
|
||||||
|
- DEBUG_COMPOSE_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
|
||||||
|
|
||||||
|
# Adjust timezone
|
||||||
|
- TIMEZONE=${TIMEZONE}
|
||||||
|
|
||||||
|
# Enable PHP-FPM support
|
||||||
|
- PHP_FPM_ENABLE=1
|
||||||
|
- PHP_FPM_SERVER_ADDR=172.16.238.11
|
||||||
|
- PHP_FPM_SERVER_PORT=9000
|
||||||
|
|
||||||
|
# Tell the webserver to look into this directory
|
||||||
|
# for additional configuration files.
|
||||||
|
#
|
||||||
|
# @see volumes:: - ./etc/${HTTPD_SERVER}:/etc/${HTTPD_SERVER}
|
||||||
|
- CUSTOM_HTTPD_CONF_DIR=/etc/${HTTPD_SERVER}
|
||||||
|
|
||||||
|
ports:
|
||||||
|
# ---- Format: ----
|
||||||
|
# [HOST-ADDR : ] HOST-PORT : DOCKER-PORT
|
||||||
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_HTTPD}:80"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
ipv4_address: 172.16.238.10
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# ---- Format: ----
|
||||||
|
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
||||||
|
|
||||||
|
# Custom scripts/binaries required for httpd server vhost
|
||||||
|
# configuration to work.
|
||||||
|
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
|
||||||
|
- ${DEVILBOX_PATH}/.devilbox/bin/${HTTPD_SERVER}:/opt/bin:ro
|
||||||
|
|
||||||
|
# Mount user-defined httpd configuration files
|
||||||
|
# @see environment::CUSTOM_HTTPD_CONF_DIR for how this
|
||||||
|
# is added in httpd server
|
||||||
|
- ${DEVILBOX_PATH}/.devilbox/etc/${HTTPD_SERVER}:/etc/${HTTPD_SERVER}:ro
|
||||||
|
|
||||||
|
# Mount custom intranet
|
||||||
|
# (configured in /etc/${HTTPD_SERVER}/01-vhost-default.conf)
|
||||||
|
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro
|
||||||
|
|
||||||
|
# Mount user-defined httpd log
|
||||||
|
# @see ./etc/${HTTPD_SERVER}/*.conf for log defines
|
||||||
|
- ${DEVILBOX_PATH}/log/${HTTPD_SERVER}:/var/log/${HTTPD_SERVER}
|
||||||
|
|
||||||
|
# Mount custom mass virtual hosting
|
||||||
|
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
|
||||||
|
- ${HOST_PATH_TO_WWW_DOCROOTS}:/shared/httpd:ro
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- php
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# PHP-FPM
|
||||||
|
# ----------------------------------------
|
||||||
|
php:
|
||||||
|
# TODO: remove latest, once it is ready for the next release
|
||||||
|
image: cytopia/${PHP_SERVER}:latest
|
||||||
|
|
||||||
|
# Manually build via `docker-compose build`
|
||||||
|
#build:
|
||||||
|
#context: https://github.com/cytopia/docker-${PHP_SERVER}.git#1
|
||||||
|
# context: https://github.com/cytopia/docker-${PHP_SERVER}.git
|
||||||
|
|
||||||
|
environment:
|
||||||
|
|
||||||
|
# Show all executed commands during docker entrypoint?
|
||||||
|
- DEBUG_COMPOSE_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
|
||||||
|
|
||||||
|
# Adjust timezone
|
||||||
|
- TIMEZONE=${TIMEZONE}
|
||||||
|
|
||||||
|
##
|
||||||
|
## PHP Xdebug
|
||||||
|
##
|
||||||
|
- PHP_XDEBUG_ENABLE=${PHP_XDEBUG_ENABLE}
|
||||||
|
- PHP_XDEBUG_REMOTE_PORT=${PHP_XDEBUG_REMOTE_PORT}
|
||||||
|
- PHP_XDEBUG_REMOTE_HOST=${PHP_XDEBUG_REMOTE_HOST}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Postfix on
|
||||||
|
##
|
||||||
|
- ENABLE_MAIL=1
|
||||||
|
|
||||||
|
##
|
||||||
|
## Map remote MySQL Port to 127.0.0.1
|
||||||
|
##
|
||||||
|
- FORWARD_MYSQL_PORT_TO_LOCALHOST=1
|
||||||
|
- MYSQL_REMOTE_ADDR=172.16.238.12
|
||||||
|
- MYSQL_REMOTE_PORT=3306
|
||||||
|
- MYSQL_LOCAL_PORT=3306
|
||||||
|
|
||||||
|
##
|
||||||
|
## Mount remote MySQL socket file to local disk
|
||||||
|
##
|
||||||
|
- MOUNT_MYSQL_SOCKET_TO_LOCALDISK=1
|
||||||
|
- MYSQL_SOCKET_PATH=/tmp/mysql/mysqld.sock
|
||||||
|
|
||||||
|
##
|
||||||
|
## Map remote PostgreSQL Port to 127.0.0.1
|
||||||
|
##
|
||||||
|
# TODO
|
||||||
|
|
||||||
|
##
|
||||||
|
## Mount remote PostgreSQL socket file to local disk
|
||||||
|
##
|
||||||
|
# TODO
|
||||||
|
|
||||||
|
##
|
||||||
|
## Additional variables needed by custom intranet
|
||||||
|
##
|
||||||
|
- HOST_PATH_TO_WWW_DOCROOTS=${HOST_PATH_TO_WWW_DOCROOTS}
|
||||||
|
- HOST_PORT_HTTPD=${HOST_PORT_HTTPD}
|
||||||
|
- HOST_PATH_TO_MYSQL_DATADIR=${HOST_PATH_TO_MYSQL_DATADIR}
|
||||||
|
- HOST_PATH_TO_POSTGRES_DATADIR=${HOST_PATH_TO_POSTGRES_DATADIR}
|
||||||
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||||
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Register optional enabled docker containers to PHP
|
||||||
|
##
|
||||||
|
- COMPOSE_OPTIONAL=1
|
||||||
|
|
||||||
|
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
ipv4_address: 172.16.238.11
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# ---- Format: ----
|
||||||
|
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
||||||
|
|
||||||
|
# Mount custom intranet
|
||||||
|
# (configured in /etc/${HTTPD_SERVER}/01-vhost-default.conf)
|
||||||
|
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro
|
||||||
|
|
||||||
|
# Mount logs
|
||||||
|
- ${DEVILBOX_PATH}/log/${PHP_SERVER}:/var/log/php-fpm
|
||||||
|
|
||||||
|
# Mount MySQL Socket directory
|
||||||
|
- mysql_socket_volume:/tmp/mysql
|
||||||
|
|
||||||
|
# Mount Mail directory
|
||||||
|
#- ${DEVILBOX_PATH}/run/mail:/var/mail
|
||||||
|
|
||||||
|
# Mount devilbox user-defined *.ini files in order
|
||||||
|
# to overwrite the default PHP configuration
|
||||||
|
- ${DEVILBOX_PATH}/cfg/${PHP_SERVER}:/etc/php-custom.d:ro
|
||||||
|
|
||||||
|
|
||||||
|
# Mount custom mass virtual hosting
|
||||||
|
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
|
||||||
|
- ${HOST_PATH_TO_WWW_DOCROOTS}:/shared/httpd
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
- postgres
|
||||||
|
- redis
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# DATABASE
|
||||||
|
# ----------------------------------------
|
||||||
|
mysql:
|
||||||
|
# TODO: remove latest, once it is ready for the next release
|
||||||
|
image: cytopia/${MYSQL_SERVER}:latest
|
||||||
|
|
||||||
|
# Manually build via `docker-compose build`
|
||||||
|
#build:
|
||||||
|
#context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git#1
|
||||||
|
# context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git
|
||||||
|
|
||||||
|
environment:
|
||||||
|
|
||||||
|
# Show all executed commands during docker entrypoint?
|
||||||
|
- DEBUG_COMPOSE_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
|
||||||
|
|
||||||
|
# Adjust timezone
|
||||||
|
- TIMEZONE=${TIMEZONE}
|
||||||
|
|
||||||
|
|
||||||
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
||||||
|
- MYSQL_SOCKET_DIR=/tmp/mysql
|
||||||
|
|
||||||
|
# Runtime settings
|
||||||
|
- MYSQL_GENERAL_LOG=${MYSQL_GENERAL_LOG}
|
||||||
|
|
||||||
|
ports:
|
||||||
|
# [local-machine:]local-port:docker-port
|
||||||
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_MYSQL}:3306"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
ipv4_address: 172.16.238.12
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# ---- Format: ----
|
||||||
|
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
||||||
|
|
||||||
|
# Mount logs
|
||||||
|
- ${DEVILBOX_PATH}/log/${MYSQL_SERVER}:/var/log/mysql
|
||||||
|
|
||||||
|
# Mount MySQL Socket directory
|
||||||
|
- mysql_socket_volume:/tmp/mysql
|
||||||
|
|
||||||
|
# Mount devilbox default overwrites
|
||||||
|
- ${DEVILBOX_PATH}/.devilbox/etc/${MYSQL_SERVER}:/etc/mysql/docker-default.d:ro
|
||||||
|
|
||||||
|
# Mount devilbox user-defined cnf files in order
|
||||||
|
# to overwrite the MySQL server configuration
|
||||||
|
- ${DEVILBOX_PATH}/cfg/${MYSQL_SERVER}:/etc/mysql/conf.d:ro
|
||||||
|
|
||||||
|
# Mount MySQL Data directory
|
||||||
|
- ${HOST_PATH_TO_MYSQL_DATADIR}:/var/lib/mysql
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# POSTGRES
|
||||||
|
# ----------------------------------------
|
||||||
|
postgres:
|
||||||
|
image: postgres:${POSTGRES_SERVER}
|
||||||
|
|
||||||
|
# Manually build via `docker-compose build`
|
||||||
|
#build:
|
||||||
|
#context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git#1
|
||||||
|
# context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git
|
||||||
|
|
||||||
|
environment:
|
||||||
|
|
||||||
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
- PGDATA=/var/lib/postgresql/data/pgdata
|
||||||
|
|
||||||
|
ports:
|
||||||
|
# [local-machine:]local-port:docker-port
|
||||||
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_POSTGRES}:5432"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
ipv4_address: 172.16.238.13
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# ---- Format: ----
|
||||||
|
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
||||||
|
|
||||||
|
# Mount logs
|
||||||
|
- ${DEVILBOX_PATH}/log/postgres-${POSTGRES_SERVER}:/var/log/postgresql
|
||||||
|
|
||||||
|
# Mount PostgreSQL Socket directory
|
||||||
|
- pgsql_socket_volume:/var/run/postgresql
|
||||||
|
|
||||||
|
# Mount PostgreSQL Data directory
|
||||||
|
- ${HOST_PATH_TO_POSTGRES_DATADIR}:/var/lib/postgresql/data/pgdata
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# Redis
|
||||||
|
# ----------------------------------------
|
||||||
|
redis:
|
||||||
|
image: redis:${REDIS_SERVER}
|
||||||
|
|
||||||
|
ports:
|
||||||
|
# [local-machine:]local-port:docker-port
|
||||||
|
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_REDIS}:6379"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
ipv4_address: 172.16.238.14
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# ---- Format: ----
|
||||||
|
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
||||||
|
|
||||||
|
# Mount logs
|
||||||
|
- ${DEVILBOX_PATH}/log/redis-${REDIS_SERVER}:/var/log/redis
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# VOLUMES
|
||||||
|
################################################################################
|
||||||
|
volumes:
|
||||||
|
# Create volume for mysql socket.
|
||||||
|
# This removes the need to mount the socket to the host
|
||||||
|
# but be able to mount it to different containers (from another container)
|
||||||
|
mysql_socket_volume:
|
||||||
|
|
||||||
|
# Create volume for postgresql socket.
|
||||||
|
# This removes the need to mount the socket to the host
|
||||||
|
# but be able to mount it to different containers (from another container)
|
||||||
|
pgsql_socket_volume:
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# NETWORK
|
||||||
|
################################################################################
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
driver: bridge
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.enable_ipv6: "false"
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: 172.16.238.0/24
|
||||||
|
gateway: 172.16.238.1
|
25
env-example
25
env-example
@ -101,7 +101,17 @@ PHP_SERVER=php-fpm-7.0
|
|||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### 1.5 Timezone for all dockers and service config files
|
### 1.5 Choose Redis Server Image
|
||||||
|
### (only for docker-compose.optional.yml)
|
||||||
|
### $ docker-compose -f docker-compose.optional.yml up
|
||||||
|
###
|
||||||
|
#REDIS_SERVER=2.8
|
||||||
|
#REDIS_SERVER=3.0
|
||||||
|
REDIS_SERVER=3.2
|
||||||
|
|
||||||
|
|
||||||
|
###
|
||||||
|
### 1.6 Timezone for all dockers and service config files
|
||||||
###
|
###
|
||||||
TIMEZONE=Europe/Berlin
|
TIMEZONE=Europe/Berlin
|
||||||
|
|
||||||
@ -228,3 +238,16 @@ PHP_XDEBUG_REMOTE_PORT=9000
|
|||||||
# where your ide/editor is listening for xdebug connections.
|
# where your ide/editor is listening for xdebug connections.
|
||||||
PHP_XDEBUG_REMOTE_HOST=172.20.10.2
|
PHP_XDEBUG_REMOTE_HOST=172.20.10.2
|
||||||
## TODO: Check if it works by automatically sending it to the broadcast address
|
## TODO: Check if it works by automatically sending it to the broadcast address
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
###
|
||||||
|
### 7. Redis Docker Settings
|
||||||
|
###
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
###
|
||||||
|
### Expost Redis Port to Host
|
||||||
|
###
|
||||||
|
HOST_PORT_REDIS=6379
|
||||||
|
Loading…
x
Reference in New Issue
Block a user