1
0
mirror of https://github.com/vimagick/dockerfiles.git synced 2024-12-25 02:04:06 +02:00

add phpvirtualbox

This commit is contained in:
kev 2016-06-14 16:32:44 +08:00
parent 539afe4df3
commit d55ec4be12
8 changed files with 376 additions and 7 deletions

30
phpvirtualbox/Dockerfile Normal file
View File

@ -0,0 +1,30 @@
#
# Dockerfile for phpvirtualbox
#
FROM alpine
MAINTAINER kev <noreply@easypi.info>
RUN set -xe \
&& apk add --no-cache bash nginx php5-fpm php5-cli php5-json php5-soap \
&& apk add --no-cache --virtual build-dependencies wget unzip \
&& touch /etc/php5/fpm.d/empty.conf \
&& wget --no-check-certificate https://sourceforge.net/projects/phpvirtualbox/files/latest/download -O phpvirtualbox.zip \
&& unzip phpvirtualbox.zip -d phpvirtualbox \
&& mkdir -p /var/www \
&& mv -v phpvirtualbox/*/* /var/www/ \
&& rm phpvirtualbox.zip \
&& rm phpvirtualbox/ -R \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* \
&& echo "<?php return array(); ?>" > /var/www/config-servers.php \
&& echo "<?php return array(); ?>" > /var/www/config-override.php \
&& chown nobody:nobody -R /var/www
COPY config.php /var/www/config.php
COPY nginx.conf /etc/nginx/nginx.conf
COPY servers-from-env.php /servers-from-env.php
EXPOSE 80
CMD php /servers-from-env.php && php-fpm && nginx

View File

@ -1,13 +1,15 @@
phpVirtualBox
=============
This is a fork of [jazzdd86/phpvirtualbox](https://hub.docker.com/r/jazzdd/phpvirtualbox/).
[phpVirtualBox][1] is a web-based front-end to VirtualBox written in PHP.
### docker-compose.yml
```yaml
phpvirtualbox:
image: jazzdd/phpvirtualbox
image: vimagick/phpvirtualbox
ports:
- "8888:80"
environment:
@ -20,7 +22,7 @@ phpvirtualbox:
```
> - Make sure you can login `remote-server` with `username:password`.
> - ISO images can be placed at `/data` directory of `remote-server`.
> - ISO images can be placed at `/data` directory on `remote-server`.
> - During the OS installation, you can connect to it with RDP viewer.
### vboxweb.service

View File

@ -21,13 +21,10 @@ RUN set -xe \
&& echo "<?php return array(); ?>" > /var/www/config-override.php \
&& chown nobody:nobody -R /var/www
# config files
COPY config.php /var/www/config.php
COPY nginx.conf /etc/nginx/nginx.conf
COPY servers-from-env.php /servers-from-env.php
# expose only nginx HTTP port
EXPOSE 80
# write linked instances to config, then monitor all services
CMD mkdir -p /run/nginx && php /servers-from-env.php && php-fpm && nginx
CMD php /servers-from-env.php && php-fpm && nginx

View File

@ -1,5 +1,6 @@
daemon off;
error_log /dev/stdout info;
pid /run/nginx.pid;
user nobody;
worker_processes 4;

229
phpvirtualbox/config.php Normal file
View File

@ -0,0 +1,229 @@
<?php
/**
* phpVirtualBox example configuration.
* @version $Id: config.php-example 452 2012-10-17 12:22:12Z imooreyahoo@gmail.com $
*
* rename to config.php and edit as needed.
*
*/
class phpVBoxConfig {
public function __construct() {
// getting servers array
$this->servers = require __DIR__ . '/config-servers.php';
// getting override settings
$overrides = require __DIR__.'/config-override.php';
foreach ($overrides as $key => $value) {
$this->$key = $value;
}
}
/* Username / Password for system user that runs VirtualBox */
var $username = '';
var $password = '';
/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'http://127.0.0.1:18083/';
/* Default language. See languages folder for more language options.
* Can also be changed in File -> Preferences -> Language in
* phpVirtualBox.
*/
var $language = 'en';
/* Set the standard VRDE Port Number / Range, e.g. 1010-1020 or 1027 */
var $vrdeports = '9000-9100';
/*
*
* Not-so-common options / tweaking
*
*/
// Multiple servers example config. Uncomment (remove /* and */) to use.
// Add ALL the servers you want to use. Even if you have the server set
// above. The default server will be the first one in the list.
/*
var $servers = array(
array(
'name' => 'London',
'username' => 'user',
'password' => 'pass',
'location' => 'http://192.168.1.1:18083/',
'authMaster' => true // Use this server for authentication
),
array(
'name' => '',
'username' => 'user2',
'password' => 'pass2',
'location' => 'http://192.168.1.2:18083/'
),
);
*/
// Disable authentication
var $noAuth = true;
// Host / ip to use for console connections
#var $consoleHost = '192.168.1.40';
// Disable "preview" box
#var $noPreview = true;
// Default preview box update interval in seconds
#var $previewUpdateInterval = 30;
// Preview box pixel width
#var $previewWidth = 180;
// Max number of progress operations to keep in list
var $maxProgressList = 5;
// Change default preview aspect ratio to 1.
// http://www.wikipedia.org/wiki/Aspect_ratio_%28image%29#Previous_and_presently_used_aspect_ratios
#var $previewAspectRatio = 1.6;
// Enable custom VM icons
#var $enableCustomIcons = true;
/*
Exclusively use phpVirtualBox's groups configuration rather than VirtualBox groups.
This has the following effects:
*) Group changes made in phpVirtualBox will not be reflected in VirtualBox programs such as
VirtualBox and VBoxManage
*) Group changes will not affect which folder a VM is placed in
*) You can rename groups that contain running VMs and move / copy running VMs to groups
*/
#var $phpVboxGroups = true;
/*
Allow to prompt deletion hard disk files on removal from Virtual Media Manager.
If this is not set, files are always kept. If this is set, you will be PROMPTED
to decide whether or not you would like to delete the hard disk file(s) when you
remove a hard disk from virtual media manager. You may still choose not to delete
the file when prompted.
*/
var $deleteOnRemove = true;
/*
* File / Folder browser settings
*/
// Restrict file types
var $browserRestrictFiles = array('.iso','.vdi','.vmdk','.img','.bin','.vhd','.hdd','.ovf','.ova','.xml','.vbox','.cdr','.dmg','.ima','.dsk','.vfd');
// Restrict locations / folders
var $browserRestrictFolders = array('/'); // Or something like array('/home/vbox','/var/ISOs')
// Force use of local, web server based file browser instead of going through vboxwebsrv
#var $browserLocal = true;
// Disable file / folder browser.
#var $browserDisable = true;
// Disable Windows drive detection
#var $noWindowsDriveList = true;
// Just list all drives from C:\ - Z:\ without checking if they exist or not.
// This may be required on older Windows systems with more than one drive.
#var $forceWindowsAllDriveList = true;
/*
* Misc
*/
/*
* Auto-refresh interval in seconds for VirtualBox host memory usage information.
* Any value below 3 will be ignored.
*/
var $hostMemInfoRefreshInterval = 5;
/* Show % of free host memory instead of % used */
#var $hostMemInfoShowFreePct = true;
/*
* VM Memory warnings.
*
* If $vmMemoryStartLimitWarn is enabled, each time a VM is started through
* phpVirtualBox, it will check that the available host memory is greater than
* the base and video memory of the VM + 50MB (a little bit of overhead). If it
* is not, a confirmation dialog will be presented to confirm that you want to
* start the VM.
*
* If $vmMemoryOffset is set (and $vmMemoryStartLimitWarn), $vmMemoryOffset
* megabytes is subtracted from the available host memory before the check is
* performed by $vmMemoryStartLimitWarn logic. For instance it may be a good
* idea to always have VM memory requirements + 100MB free. 100 is the default.
*/
#var $vmMemoryStartLimitWarn = true;
#var $vmMemoryOffset = 100;
/*
* Display guest additions version of a running VM on its Details tab
*/
#var $enableGuestAdditionsVersionDisplay = true;
/* Disable any of phpVirtualBox's main tabs */
#var $disableTabVMSnapshots = true; // Snapshots tab
#var $disableTabVMConsole = true; // Console tab
/* Screen resolutions for console tab */
var $consoleResolutions = array('640x480','800x600','1024x768','1280x720','1440x900');
/* Console tab keyboard layout. Currently Oracle's RDP client only supports EN and DE. */
var $consoleKeyboardLayout = 'EN';
/* Max number of network cards per VM. Do not set above VirtualBox's limit (typically 8) or below 1 */
var $nicMax = 4;
/* Enable advanced configuration items (normally hidden in the VirtualBox GUI)
* Note that some of these items may not be translated to languages other than English.
*/
#var $enableAdvancedConfig = true;
/* Enable startup / shutdown configuration.
* This only works in linux and you must add the vboxinit file to
* your startup scripts list.
*/
#var $startStopConfig = true;
// Authentication library.
var $authLib = 'Builtin';
// VM ownership
#var $enforceVMOwnership = true;
// Per-user VM quota
#var $vmQuotaPerUser = 2;
// Allow VDE network configuration. This must be supported by the underlying VirtualBox installation!
// If you do not know what VDE networking is - you do not need it, it is probably not supported by your
// VirtualBox installation and will cause errors if enabled.
#var $enableVDE = true;
// Disable setting SATA controllers port count to the max port number found when saving VMs.
#var $disableSataPortCount = true;
/* Enable Parallel Port configuration - EXPERIMENTAL
LPT support may or may not work for you.
!!! VirtualBox LPT support only works in Linux. !!!
*/
#var $enableLPTConfig = true;
/* Enable HardDisk IgnoreFlush configuration. This controls the "ExtraData" setting
* in "VBoxInternal/Devices/[controller type]/0/LUN#[x]/Config/IgnoreFlush". See
* Responding to guest IDE/SATA flush requests at:
* http://www.virtualbox.org/manual/ch12.html#idp12757424
*/
#var $enableHDFlushConfig = true;
/* END SETTINGS */
}

View File

@ -1,5 +1,5 @@
phpvirtualbox:
image: jazzdd/phpvirtualbox
image: vimagick/phpvirtualbox
ports:
- "8888:80"
environment:

45
phpvirtualbox/nginx.conf Normal file
View File

@ -0,0 +1,45 @@
daemon off;
error_log /dev/stdout info;
pid /run/nginx.pid;
user nobody;
worker_processes 4;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /dev/stdout;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root /var/www;
location / {
index index.php index.html;
try_files $uri $uri/ =404;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}

View File

@ -0,0 +1,65 @@
<?php
$servers = array();
$config_overrides = array();
// getting config overrides for all servers
foreach ($_SERVER as $key => $value) {
preg_match('/(.*?)(?:_ENV_|_)?CONF_(.+)/', $key, $matches);
if ($matches) {
$value= (strpos($value, ',')) ? split(',',$value) : $value;
$config_overrides[$matches[1]] = array($matches[2] => $value);
}
}
echo 'Exposing the following linked server instances:' . PHP_EOL;
// getting servers from linked vboxwebsrv containers or environment variables
foreach ($_SERVER as $key => $value) {
if (substr($key, -15) === '_PORT_18083_TCP') {
$prefix = substr($key, 0, -15);
$name = getenv($prefix . '_NAME');
$pos = strrpos($name, '/');
if ($pos !== false) {
$name = substr($name, $pos + 1);
}
if (!$name) {
$name = strtolower($prefix);
}
$name = ucfirst($name);
$location = 'http://' . str_replace('tcp://', '', $value) . '/';
echo '- ' . $name . ' (' . $location .')' . PHP_EOL;
$username = getenv($prefix.'_USER');
$password = getenv($prefix.'_PW');
if ($username == "") $username = 'username';
if ($password == "") $password = 'username';
$servers []= array_merge(array(
'name' => $name,
'username' => $username,
'password' => $password,
'authMaster' => true,
'location' => $location),
(array_key_exists($prefix, $config_overrides)) ? $config_overrides[$prefix] : array());
}
}
// check if there are any servers
if (!$servers) {
echo 'Error: No vboxwebsrv instance linked? Use "--link containername:myname"' . PHP_EOL;
echo 'Use environment variables if no vboxwebsrv containers are used!';
exit(1);
}
// put servers array to file
file_put_contents('/var/www/config-servers.php', '<?php return ' . var_export($servers, true) . ';');
if (array_key_exists("", $config_overrides)) {
// getting global config overrides
file_put_contents('/var/www/config-override.php','<?php return ' . var_export($config_overrides[""], true) . ';' );
}