php_fpm_docker 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 08561383c48f14924c1967249fe57a2dd35b6724
4
+ data.tar.gz: 721bc071962fa48d62240455d759c64083b3f73a
5
+ SHA512:
6
+ metadata.gz: f841fdeef56027ca36a7c1b0d573d40f830d43b18bbbb38bc4afc926b6874f78bcf3313d9240b79e27cf2df386d4cda574b7973ca75641b77393cc40a29af4c2
7
+ data.tar.gz: 10aaa799db13f46ddad3b67a8e20235404399c732c23bc76e1522ab5f1818963e4f11eeb9f0ad7b8d74925890f9f96fcef4bc4cf9b306d087dd298339f99cbb8
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ *.swp
2
+ *.gem
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ .idea/
8
+ coverage
9
+ lib/bundler/man
10
+ pkg
11
+ rdoc
12
+ spec/reports
13
+ test/tmp
14
+ test/version_tmp
15
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,20 @@
1
+ Style/Encoding:
2
+ Enabled: false
3
+
4
+ Metrics/LineLength:
5
+ Max: 80
6
+
7
+ Metrics/MethodLength:
8
+ Max: 25
9
+
10
+ Metrics/ClassLength:
11
+ Max: 250
12
+
13
+ Metrics/AbcSize:
14
+ Max: 35
15
+
16
+ AllCops:
17
+ Exclude:
18
+ - 'Rakefile'
19
+ - 'spec/**/*'
20
+ - 'vendor/**/*'
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in php_fpm_docker.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,79 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ php_fpm_docker (0.0.1)
5
+ docker-api
6
+ inifile
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ archive-tar-minitar (0.5.2)
12
+ ast (2.0.0)
13
+ astrolabe (1.3.0)
14
+ parser (>= 2.2.0.pre.3, < 3.0)
15
+ coveralls (0.7.2)
16
+ multi_json (~> 1.3)
17
+ rest-client (= 1.6.7)
18
+ simplecov (>= 0.7)
19
+ term-ansicolor (= 1.2.2)
20
+ thor (= 0.18.1)
21
+ diff-lcs (1.2.5)
22
+ docile (1.1.5)
23
+ docker-api (1.15.0)
24
+ archive-tar-minitar
25
+ excon (>= 0.38.0)
26
+ json
27
+ excon (0.41.0)
28
+ inifile (3.0.0)
29
+ json (1.8.1)
30
+ mime-types (2.4.3)
31
+ multi_json (1.10.1)
32
+ parser (2.2.0.pre.8)
33
+ ast (>= 1.1, < 3.0)
34
+ slop (~> 3.4, >= 3.4.5)
35
+ powerpack (0.0.9)
36
+ rainbow (2.0.0)
37
+ rake (10.3.2)
38
+ rest-client (1.6.7)
39
+ mime-types (>= 1.16)
40
+ rspec (3.1.0)
41
+ rspec-core (~> 3.1.0)
42
+ rspec-expectations (~> 3.1.0)
43
+ rspec-mocks (~> 3.1.0)
44
+ rspec-core (3.1.7)
45
+ rspec-support (~> 3.1.0)
46
+ rspec-expectations (3.1.2)
47
+ diff-lcs (>= 1.2.0, < 2.0)
48
+ rspec-support (~> 3.1.0)
49
+ rspec-mocks (3.1.3)
50
+ rspec-support (~> 3.1.0)
51
+ rspec-support (3.1.2)
52
+ rubocop (0.27.1)
53
+ astrolabe (~> 1.3)
54
+ parser (>= 2.2.0.pre.7, < 3.0)
55
+ powerpack (~> 0.0.6)
56
+ rainbow (>= 1.99.1, < 3.0)
57
+ ruby-progressbar (~> 1.4)
58
+ ruby-progressbar (1.7.0)
59
+ simplecov (0.9.1)
60
+ docile (~> 1.1.0)
61
+ multi_json (~> 1.0)
62
+ simplecov-html (~> 0.8.0)
63
+ simplecov-html (0.8.0)
64
+ slop (3.6.0)
65
+ term-ansicolor (1.2.2)
66
+ tins (~> 0.8)
67
+ thor (0.18.1)
68
+ tins (0.13.2)
69
+
70
+ PLATFORMS
71
+ ruby
72
+
73
+ DEPENDENCIES
74
+ bundler (~> 1.3)
75
+ coveralls
76
+ php_fpm_docker!
77
+ rake
78
+ rspec
79
+ rubocop
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Christian Simon
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # PHP_FPM_Docker
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Build state
6
+
7
+ * Travis (RSpec & RuboCup)
8
+ [![Build Status](https://travis-ci.org/simonswine/php_fpm_docker.svg?branch=master)](https://travis-ci.org/simonswine/php_fpm_docker)
9
+ * Coveralls
10
+ [![Coverage Status](https://img.shields.io/coveralls/simonswine/php_fpm_docker.svg)](https://coveralls.io/r/simonswine/php_fpm_docker)
11
+
12
+ ## Topology
13
+
14
+ ![structure](https://raw.githubusercontent.com/simonswine/php_fpm_docker/master/doc/graphs/structure/structure.png)
15
+
16
+
17
+ ## Installation & configuration
18
+
19
+ ### Install gem
20
+
21
+ $ gem install php_fpm_docker
22
+
23
+ ### Configure
24
+
25
+ ## Docker images
26
+
27
+ ### Requirements
28
+
29
+ * PHP-FastCGI binary installed in path
30
+ * [Spawn-FCGI][spawnfcgi] binary installed in path
31
+
32
+
33
+ ### Examples
34
+
35
+ * [simonswine/ispconfig-php-5.6][image5.6]
36
+ * [simonswine/ispconfig-php-5.5][image5.5]
37
+ * [simonswine/ispconfig-php-5.4][image5.4]
38
+ * [simonswine/ispconfig-php-5.3][image5.3]
39
+ * [simonswine/ispconfig-php-5.2][image5.2]
40
+ * [simonswine/ispconfig-php-4.4][image4.4]
41
+
42
+ https://github.com/simonswine/docker-ispconfig-php
43
+ ####
44
+
45
+ ## Usage
46
+
47
+ TODO: Write usage instructions here
48
+
49
+ ## Contributing
50
+
51
+ 1. Fork it
52
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
53
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
54
+ 4. Push to the branch (`git push origin my-new-feature`)
55
+ 5. Create new Pull Request
56
+
57
+
58
+ [docker]: https://www.docker.com/ "Docker"
59
+ [ispconfig]: http://www.ispconfig.org/page/home.html "ISPConfig"
60
+ [rubydocs]: https://github.com/jmcmanus/pagedown-extra "Pagedown Extra"
61
+ [phpfpm]: http://php.net/manual/de/install.fpm.php "PHP FPM"
62
+ [spawnfcgi]: http://redmine.lighttpd.net/projects/spawn-fcgi "Spawn-FCGI"
63
+ [image5.6]: https://registry.hub.docker.com/u/simonswine/ispconfig-php-5.6/ "simonswine/ispconfig-php-5.6"
64
+ [image5.5]: https://registry.hub.docker.com/u/simonswine/ispconfig-php-5.5/ "simonswine/ispconfig-php-5.5"
65
+ [image5.4]: https://registry.hub.docker.com/u/simonswine/ispconfig-php-5.4/ "simonswine/ispconfig-php-5.4"
66
+ [image5.3]: https://registry.hub.docker.com/u/simonswine/ispconfig-php-5.3/ "simonswine/ispconfig-php-5.3"
67
+ [image5.2]: https://registry.hub.docker.com/u/simonswine/ispconfig-php-5.2/ "simonswine/ispconfig-php-5.2"
68
+ [image4.4]: https://registry.hub.docker.com/u/simonswine/ispconfig-php-4.4/ "simonswine/ispconfig-php-4.4"
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ require 'bundler/gem_tasks'
3
+
4
+ # rspec
5
+ begin
6
+ require 'rspec/core/rake_task'
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ rescue LoadError
9
+ end
10
+
11
+ # rubocop
12
+ begin
13
+ require 'rubocop/rake_task'
14
+ RuboCop::RakeTask.new
15
+ rescue LoadError
16
+ end
17
+
18
+ desc 'Run all tests'
19
+ task :test => [:spec, :rubocop]
20
+
21
+ task :default => :test
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+ require 'php_fpm_docker/application'
4
+ PhpFpmDocker::Application.new.run
@@ -0,0 +1 @@
1
+ {"contentType":"application/gliffy+json","version":"1.3","stage":{"background":"rgba(0, 0, 0, 0)","width":859,"height":350,"nodeIndex":201,"autoFit":true,"exportBorder":false,"gridOn":true,"snapToGrid":false,"drawingGuidesOn":false,"pageBreaksOn":false,"printGridOn":false,"printPaper":"LETTER","printShrinkToFit":false,"printPortrait":true,"maxWidth":5000,"maxHeight":5000,"themeData":null,"viewportType":"default","fitBB":{"min":{"x":6.5,"y":5.5},"max":{"x":858.3333333333335,"y":350}},"objects":[{"x":591.8,"y":165.2,"rotation":0.0,"id":139,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":43,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":129,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":110,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#cc0000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[-0.7999999999999545,4.800000000000068],[-0.7999999999999545,28.80000000000001]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":591.8,"y":118.0,"rotation":0.0,"id":138,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":42,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":129,"py":0.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":127,"py":1.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#cc0000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[-0.7999999999999545,2.000000000000057],[-0.7999999999999545,-18.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":511.0,"y":50.0,"rotation":0.0,"id":127,"width":160.0,"height":50.0,"uid":"com.gliffy.shape.basic.basic_v1.default.round_rectangle","order":36,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.round_rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.199999999999999,"y":0.0,"rotation":0.0,"id":128,"width":153.59999999999997,"height":12.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:11px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">PHP_FPM_Docker</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":597.4,"y":236.39999999999998,"rotation":0.0,"id":112,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":34,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":110,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":85,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#0b5394","fillColor":"none","dashStyle":null,"startArrow":1,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[-6.399999999999977,-2.3999999999999773],[-6.399999999999977,63.59999999999991]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":511.0,"y":194.0,"rotation":0.0,"id":110,"width":160.0,"height":40.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":32,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.199999999999998,"y":0.0,"rotation":0.0,"id":111,"width":153.59999999999997,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">Apache / Nginx</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":31.0,"y":50.0,"rotation":0.0,"id":71,"width":460.0,"height":210.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":0,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":1.0,"strokeColor":"#000000","fillColor":"#ffffff","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":2.0,"y":0.0,"rotation":0.0,"id":72,"width":456.0,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">Docker</span></span></p>","tid":null,"valign":"bottom","vposition":"none","hposition":"none"}},"children":[]}]},{"x":190.2,"y":235.60000000000002,"rotation":0.0,"id":97,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":29,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":19,"py":1.0,"px":0.7071067811865476}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":85,"py":0.0,"px":0.2928932188134524}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#0b5394","fillColor":"none","dashStyle":null,"startArrow":1,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[2.2213562373095215,-1.6000000000000227],[2.2213562373095215,31.39999999999992],[359.3786437626905,31.39999999999992],[359.3786437626905,64.39999999999986]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[]},{"x":413.4,"y":236.39999999999998,"rotation":0.0,"id":87,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":28,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":66,"py":1.0,"px":0.7071067811865476}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":85,"py":0.0,"px":0.2928932188134524}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#0b5394","fillColor":"none","dashStyle":null,"startArrow":1,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[-0.9786437626904672,-2.3999999999999773],[-0.9786437626904672,30.599999999999966],[136.1786437626905,30.599999999999966],[136.1786437626905,63.59999999999991]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[]},{"x":271.0,"y":66.0,"rotation":0.0,"id":14,"width":200.0,"height":50.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":4,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":1.0,"strokeColor":"#000000","fillColor":"#ffffff","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":3.636363636363635,"y":0.0,"rotation":0.0,"id":15,"width":192.72727272727263,"height":28.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"\">Docker image</span></p><p style=\"text-align:center;\"><span style=\"\">simonswine/ispconfig-php-5.4</span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":51.0,"y":66.0,"rotation":0.0,"id":2,"width":200.0,"height":50.00000000000006,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":2,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":1.0,"strokeColor":"#000000","fillColor":"#ffffff","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":3.636363636363635,"y":0.0,"rotation":0.0,"id":13,"width":192.72727272727263,"height":28.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"\">Docker image</span></p><p style=\"text-align:center;\"><span style=\"\">simonswine/ispconfig-php-5.6</span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":61.0,"y":204.0,"rotation":0.0,"id":21,"width":180.0,"height":20.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":8,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":3.599999999999999,"y":0.0,"rotation":0.0,"id":22,"width":172.79999999999995,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">spawn-fcgi</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":61.0,"y":164.0,"rotation":0.0,"id":29,"width":180.0,"height":20.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":10,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":3.599999999999999,"y":0.0,"rotation":0.0,"id":30,"width":172.79999999999995,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">php-cgi</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":51.0,"y":134.0,"rotation":0.0,"id":19,"width":200.0,"height":100.00000000000001,"uid":"com.gliffy.shape.basic.basic_v1.default.round_rectangle","order":6,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.round_rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":4.0,"y":0.0,"rotation":0.0,"id":20,"width":192.0,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">Docker container web1</span></span></p>","tid":null,"valign":"top","vposition":"none","hposition":"none"}},"children":[]}]},{"x":281.0,"y":204.0,"rotation":0.0,"id":62,"width":180.0,"height":20.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":15,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":3.599999999999999,"y":0.0,"rotation":0.0,"id":63,"width":172.79999999999995,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">spawn-fcgi</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":281.0,"y":164.0,"rotation":0.0,"id":64,"width":180.0,"height":20.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":17,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":3.599999999999999,"y":0.0,"rotation":0.0,"id":65,"width":172.79999999999995,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">php-cgi</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":271.0,"y":134.0,"rotation":0.0,"id":66,"width":200.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.round_rectangle","order":13,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.round_rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":true,"state":0,"opacity":1.0,"shadowX":4.0,"shadowY":4.0}},"linkMap":[],"children":[{"x":4.0,"y":0.0,"rotation":0.0,"id":67,"width":192.0,"height":14.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">Docker container web2</span></span></p>","tid":null,"valign":"top","vposition":"none","hposition":"none"}},"children":[]}]},{"x":511.0,"y":120.00000000000006,"rotation":0.0,"id":129,"width":160.0,"height":50.0,"uid":"com.gliffy.shape.basic.basic_v1.default.round_rectangle","order":38,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.round_rectangle.basic_v1","strokeWidth":2.0,"strokeColor":"#333333","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.199999999999999,"y":0.0,"rotation":0.0,"id":130,"width":153.59999999999997,"height":12.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"font-size:11px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\">ISPConfig</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":508.6,"y":94.0,"rotation":0.0,"id":134,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":41,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":127,"py":0.5,"px":0.0}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":66,"py":0.29289321881345237,"px":1.0}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#cc0000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[2.3999999999999773,-19.0],[-17.600000000000023,-19.0],[-17.600000000000023,69.28932188134524],[-37.60000000000002,69.28932188134524]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[]},{"x":587.0,"y":66.80000000000001,"rotation":0.0,"id":133,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":40,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":127,"py":0.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":19,"py":0.2928932188134525,"px":1.1102230246251563E-16}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#cc0000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[4.0,-16.80000000000001],[4.0,-56.80000000000001],[-576.0,-56.80000000000001],[-576.0,96.48932188134523],[-536.0,96.48932188134523]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[]},{"x":150.2,"y":238.0,"rotation":0.0,"id":82,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":24,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":19,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":76,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#274e13","fillColor":"none","dashStyle":null,"startArrow":1,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[0.8000000000000114,-4.0],[0.8000000000000114,62.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":371.0,"y":238.79999999999995,"rotation":0.0,"id":83,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":25,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":66,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":79,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#274e13","fillColor":"none","dashStyle":null,"startArrow":1,"endArrow":0,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[0.0,-4.7999999999999545],[0.0,61.19999999999993]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":51.0,"y":300.0,"rotation":0.0,"id":76,"width":200.0,"height":50.0,"uid":"com.gliffy.shape.basic.basic_v1.default.octagon","order":20,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.octagon.basic_v1","strokeWidth":2.0,"strokeColor":"#274e13","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.9999999999999996,"y":0.0,"rotation":0.0,"id":78,"width":191.99999999999997,"height":28.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"\">Volume</span></p><p style=\"text-align:center;\"><span style=\"\">/var/www/clients/client1/web1</span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":271.0,"y":299.9999999999999,"rotation":0.0,"id":79,"width":200.0,"height":50.0,"uid":"com.gliffy.shape.basic.basic_v1.default.octagon","order":22,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.octagon.basic_v1","strokeWidth":2.0,"strokeColor":"#274e13","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.9999999999999996,"y":0.0,"rotation":0.0,"id":80,"width":191.99999999999997,"height":28.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"\">Volume</span></p><p style=\"text-align:center;\"><span style=\"\">/var/www/clients/client1/web2</span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":491.0,"y":299.9999999999999,"rotation":0.0,"id":85,"width":200.0,"height":50.0,"uid":"com.gliffy.shape.basic.basic_v1.default.octagon","order":26,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.octagon.basic_v1","strokeWidth":2.0,"strokeColor":"#274e13","fillColor":"#FFFFFF","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[{"x":3.9999999999999996,"y":0.0,"rotation":0.0,"id":86,"width":191.99999999999997,"height":28.0,"uid":null,"order":"auto","lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":8,"paddingRight":8,"paddingBottom":8,"paddingLeft":8,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":6,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:center;\"><span style=\"\">Volume</span></p><p style=\"text-align:center;\"><span style=\"\">/var/lib/php5-fpm</span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"children":[]}]},{"x":153.4,"y":133.2,"rotation":0.0,"id":34,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":12,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":2,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":19,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#e69138","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[-2.4000000000000057,-17.199999999999932],[-2.4000000000000057,-11.199999999999946],[-2.4000000000000057,-5.19999999999996],[-2.4000000000000057,0.8000000000000114]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[]},{"x":183.39999999999998,"y":239.20000000000005,"rotation":0.0,"id":68,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":19,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":14,"py":1.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":66,"py":0.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#e69138","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":10.0,"controlPath":[[187.60000000000002,-123.20000000000005],[187.60000000000002,-117.20000000000005],[187.60000000000002,-111.20000000000005],[187.60000000000002,-105.20000000000005]],"lockSegments":{},"ortho":true}},"linkMap":[],"children":[]},{"x":149.4,"y":205.20000000000005,"rotation":0.0,"id":105,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":30,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":21,"py":0.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":29,"py":1.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#ff00ff","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[1.5999999999999943,-1.2000000000000455],[1.5999999999999943,-21.200000000000045]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":372.6,"y":206.0,"rotation":0.0,"id":106,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":31,"lockAspectRatio":false,"lockShape":false,"constraints":{"constraints":[],"startConstraint":{"type":"StartPositionConstraint","StartPositionConstraint":{"nodeId":62,"py":0.0,"px":0.5}},"endConstraint":{"type":"EndPositionConstraint","EndPositionConstraint":{"nodeId":64,"py":1.0,"px":0.5}}},"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#ff00ff","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[-1.6000000000000227,-2.0],[-1.6000000000000227,-22.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":704.5333333333334,"y":198.93333333333345,"rotation":0.0,"id":185,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":54,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#0b5394","fillColor":"none","dashStyle":null,"startArrow":1,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[0.0,0.0],[38.939356722361715,0.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":705.1,"y":171.10000000000008,"rotation":0.0,"id":178,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":53,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#ff00ff","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[0.0,0.0],[38.939356722361715,0.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":705.5000000000001,"y":143.60000000000008,"rotation":0.0,"id":172,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":52,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#274e13","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[0.0,0.0],[38.939356722361715,0.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":705.9000000000001,"y":115.1000000000002,"rotation":0.0,"id":163,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":51,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#cc0000","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":1,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[0.0,0.0],[38.939356722361715,0.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]},{"x":694.3333333333334,"y":66.99999999999994,"rotation":0.0,"id":157,"width":164.00000000000006,"height":149.0,"uid":"com.gliffy.shape.basic.basic_v1.default.rectangle","order":50,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Shape","Shape":{"tid":"com.gliffy.stencil.rectangle.basic_v1","strokeWidth":1.0,"strokeColor":"#000000","fillColor":"none","gradient":false,"dashStyle":null,"dropShadow":false,"state":0,"opacity":1.0,"shadowX":0.0,"shadowY":0.0}},"linkMap":[],"children":[]},{"x":749.6666666666669,"y":78.99999999999994,"rotation":0.0,"id":152,"width":107.0,"height":126.0,"uid":"com.gliffy.shape.basic.basic_v1.default.text","order":49,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Text","Text":{"overflow":"none","paddingTop":2,"paddingRight":2,"paddingBottom":2,"paddingLeft":2,"outerPaddingTop":6,"outerPaddingRight":6,"outerPaddingBottom":2,"outerPaddingLeft":5,"type":"fixed","lineTValue":null,"linePerpValue":null,"cardinalityType":null,"html":"<p style=\"text-align:left;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">is base image</span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\"> </span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">configures</span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\"> </span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">is mounted</span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\"> </span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">launches</span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;text-decoration:none;font-family:Arial;\"><span style=\"text-decoration:none;\"> </span></span></p><p style=\"text-align:left;\"><span style=\"font-size:12px;font-family:Arial;\"><span style=\"\">unix socket comm.</span></span></p>","tid":null,"valign":"middle","vposition":"none","hposition":"none"}},"linkMap":[],"children":[]},{"x":705.9333333333334,"y":86.6666666666668,"rotation":0.0,"id":147,"width":100.0,"height":100.0,"uid":"com.gliffy.shape.basic.basic_v1.default.line","order":48,"lockAspectRatio":false,"lockShape":false,"graphic":{"type":"Line","Line":{"strokeWidth":2.0,"strokeColor":"#e69138","fillColor":"none","dashStyle":null,"startArrow":0,"endArrow":2,"startArrowRotation":"auto","endArrowRotation":"auto","interpolationType":"linear","cornerRadius":null,"controlPath":[[0.0,0.0],[38.93935672236171,0.0]],"lockSegments":{},"ortho":false}},"linkMap":[],"children":[]}],"shapeStyles":{"com.gliffy.shape.basic.basic_v1.default":{"fill":"none","stroke":"#000000","strokeWidth":1,"shadow":false,"gradient":false}},"lineStyles":{"global":{"endArrow":1,"startArrow":1,"stroke":"#274e13"}},"textStyles":{"global":{"size":"12px"}}},"metadata":{"title":"untitled","revision":0,"exportBorder":false,"loadPosition":"default","libraries":["com.gliffy.libraries.basic.basic_v1.default","com.gliffy.libraries.flowchart.flowchart_v1.default","com.gliffy.libraries.swimlanes.swimlanes_v1.default","com.gliffy.libraries.uml.uml_v2.class","com.gliffy.libraries.uml.uml_v2.sequence","com.gliffy.libraries.uml.uml_v2.activity","com.gliffy.libraries.erd.erd_v1.default","com.gliffy.libraries.ui.ui_v3.containers_content","com.gliffy.libraries.ui.ui_v3.forms_controls","com.gliffy.libraries.images"],"autosaveDisabled":false},"embeddedResources":{"index":0,"resources":[]}}
Binary file
@@ -0,0 +1 @@
1
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="878.3333333333335" height="370"><defs/><g transform="translate(0,0)"><g><rect fill="rgb(0,0,0)" stroke="none" x="0" y="0" width="878.3333333333335" height="370" fill-opacity="0"/></g><g transform="translate(0.5,0.5) matrix(1,0,0,1,31,50)"><g><g transform="translate(0,0) scale(4.6,2.1)"><g><path fill="#ffffff" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.2173913043478261,0.47619047619047616)"><path fill="none" stroke="none" d="M 0 0 L 459.99999999999994 0 Q 459.99999999999994 0 459.99999999999994 0 L 459.99999999999994 210 Q 459.99999999999994 210 459.99999999999994 210 L 0 210 Q 0 210 0 210 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#000000" d="M 0 0 M 0 0 L 459.99999999999994 0 Q 459.99999999999994 0 459.99999999999994 0 L 459.99999999999994 210 Q 459.99999999999994 210 459.99999999999994 210 L 0 210 Q 0 210 0 210 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,33,50) translate(8,188)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="200.9951171875" y="11">Docker</text></g><g transform="translate(0.5,0.5) matrix(1,0,0,1,51,66)"><g transform="translate(4,4) scale(1.0025,1.01)"><g><g transform="translate(0,0) scale(2,0.5000000000000006)"><g><path fill="#000000" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z" opacity="0.294117647"/><g transform="scale(0.5,1.9999999999999978)"><path fill="none" stroke="none" d="M 0 0 L 200 0 Q 200 0 200 0 L 200 50.00000000000006 Q 200 50.00000000000006 200 50.00000000000006 L 0 50.00000000000006 Q 0 50.00000000000006 0 50.00000000000006 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="rgb(0,0,0)" d="M 0 0 M 0 0 L 200 0 Q 200 0 200 0 L 200 50.00000000000006 Q 200 50.00000000000006 200 50.00000000000006 L 0 50.00000000000006 Q 0 50.00000000000006 0 50.00000000000006 L 0 0 Q 0 0 0 0 Z" stroke-opacity="0" stroke-miterlimit="10" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(2,0.5000000000000006)"><g><path fill="#ffffff" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.5,1.9999999999999978)"><path fill="none" stroke="none" d="M 0 0 L 200 0 Q 200 0 200 0 L 200 50.00000000000006 Q 200 50.00000000000006 200 50.00000000000006 L 0 50.00000000000006 Q 0 50.00000000000006 0 50.00000000000006 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#000000" d="M 0 0 M 0 0 L 200 0 Q 200 0 200 0 L 200 50.00000000000006 Q 200 50.00000000000006 200 50.00000000000006 L 0 50.00000000000006 Q 0 50.00000000000006 0 50.00000000000006 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,54.63636363636363,66) translate(8,11.000000000000028)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="51.34996448863632" y="11">Docker image</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="9.323597301136317" y="25">simonswine/ispconfig-php-5.6</text></g><g transform="translate(0.5,0.5) matrix(1,0,0,1,271,66)"><g transform="translate(4,4) scale(1.0025,1.01)"><g><g transform="translate(0,0) scale(2,0.5)"><g><path fill="#000000" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z" opacity="0.294117647"/><g transform="scale(0.5,2)"><path fill="none" stroke="none" d="M 0 0 L 200 0 Q 200 0 200 0 L 200 50 Q 200 50 200 50 L 0 50 Q 0 50 0 50 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="rgb(0,0,0)" d="M 0 0 M 0 0 L 200 0 Q 200 0 200 0 L 200 50 Q 200 50 200 50 L 0 50 Q 0 50 0 50 L 0 0 Q 0 0 0 0 Z" stroke-opacity="0" stroke-miterlimit="10" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(2,0.5)"><g><path fill="#ffffff" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.5,2)"><path fill="none" stroke="none" d="M 0 0 L 200 0 Q 200 0 200 0 L 200 50 Q 200 50 200 50 L 0 50 Q 0 50 0 50 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#000000" d="M 0 0 M 0 0 L 200 0 Q 200 0 200 0 L 200 50 Q 200 50 200 50 L 0 50 Q 0 50 0 50 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,274.6363636363636,66) translate(8,11)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="51.34996448863632" y="11">Docker image</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="9.323597301136317" y="25">simonswine/ispconfig-php-5.4</text></g><g transform="translate(0,0) matrix(1,0,0,1,51,134)"><g transform="translate(4,4) scale(1.005,1.01)"><g><g transform="translate(0,0) scale(2,1.0000000000000002)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(0.5,0.9999999999999998)"><path fill="#000000" stroke="none" d="M 10 0 L 190 0 Q 200 0 200 10 L 200 90.00000000000003 Q 200 100.00000000000003 190 100.00000000000003 L 10 100.00000000000003 Q 0 100.00000000000003 0 90.00000000000003 L 0 10 Q 0 0 10 0 Z" opacity="0.294117647"/><path fill="none" stroke="rgb(0,0,0)" d="M 10 0 M 10 0 L 190 0 Q 200 0 200 10 L 200 90.00000000000003 Q 200 100.00000000000003 190 100.00000000000003 L 10 100.00000000000003 Q 0 100.00000000000003 0 90.00000000000003 L 0 10 Q 0 0 10 0 Z" stroke-opacity="0" stroke-miterlimit="10" stroke-width="2" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(2,1.0000000000000002)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(0.5,0.9999999999999998)"><path fill="#FFFFFF" stroke="none" d="M 10 0 L 190 0 Q 200 0 200 10 L 200 90.00000000000003 Q 200 100.00000000000003 190 100.00000000000003 L 10 100.00000000000003 Q 0 100.00000000000003 0 90.00000000000003 L 0 10 Q 0 0 10 0 Z"/><path fill="none" stroke="#333333" d="M 10 0 M 10 0 L 190 0 Q 200 0 200 10 L 200 90.00000000000003 Q 200 100.00000000000003 190 100.00000000000003 L 10 100.00000000000003 Q 0 100.00000000000003 0 90.00000000000003 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,55,134) translate(8,8)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="26.634765625" y="11">Docker container web1</text></g><g transform="translate(0,0) matrix(1,0,0,1,61,204)"><g transform="translate(4,4) scale(1.0055555555555555,1.05)"><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#000000" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z" opacity="0.294117647"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="rgb(0,0,0)" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-opacity="0" stroke-miterlimit="10" stroke-width="2" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#FFFFFF" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#333333" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,64.6,204) translate(8,3)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="49.72128906249998" y="11">spawn-fcgi</text></g><g transform="translate(0,0) matrix(1,0,0,1,61,164)"><g transform="translate(4,4) scale(1.0055555555555555,1.05)"><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#000000" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z" opacity="0.294117647"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="rgb(0,0,0)" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-opacity="0" stroke-miterlimit="10" stroke-width="2" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#FFFFFF" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#333333" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,64.6,164) translate(8,3)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="58.72128906249998" y="11">php-cgi</text></g><g transform="matrix(1,0,0,1,121,104)"><image width="60" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAB2UlEQVRoQ+2XMU7DQBREd0OBqIAypjE3oIs7wgngBuQEMT4B4QQmnCDcAE4AqXA6bgANUAIVosny144lxzFClrLzhf3dWI6inZ1589eJVi27dMv8KjHcdOJCWAg3LAGpdMOArtgRwkK4YQmwVPp1HBiboxcmcH24oDUqhoFjI4TXGfZbHPTVhk7ntXgZY+7ts9a6X6XXHT5M17mP4lpOCdOsWmOHNTc/pcOsMoia61R+3alhS9h01F2djeq5OupGSdoAF5dTw9mJ3Luh8h5nm7ftLksWPzO3Xjg7cWE0X9O5YaLsE+WnzO9inPVCtvRMdPeJ7vO/NpxRDiZ0O/3DyDXN7sClWbu2c8JWZIly3uySOoIuzLAVehkHI0r3vIogFf1iL0xGrulCDb/HBztfnU2aT729bMx8bs2//d3o8aNRhn+jjKQLJWzFVilj6cINpyf2Ve9MGR2n9dUm8oazS0SVcw3IKV02RK8pmuX0/7CPNMtC2IrSa2pg7/QjY9IKw2iTRT2WSothYAJCGBg2i5QQZokdKCqEgWGzSAlhltiBokIYGDaLlBBmiR0oKoSBYbNICWGW2IGiQhgYNouUEGaJHSgqhIFhs0gJYZbYgaJCGBg2i1TrCP8AIEx0Pf3XeJ8AAAAASUVORK5CYII=" transform="translate(0,0)"/></g><g transform="translate(0,0) matrix(1,0,0,1,271,134)"><g transform="translate(4,4) scale(1.005,1.01)"><g><g transform="translate(0,0) scale(2,1)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(0.5,1)"><path fill="#000000" stroke="none" d="M 10 0 L 190 0 Q 200 0 200 10 L 200 90 Q 200 100 190 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z" opacity="0.294117647"/><path fill="none" stroke="rgb(0,0,0)" d="M 10 0 M 10 0 L 190 0 Q 200 0 200 10 L 200 90 Q 200 100 190 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z" stroke-opacity="0" stroke-miterlimit="10" stroke-width="2" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(2,1)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(0.5,1)"><path fill="#FFFFFF" stroke="none" d="M 10 0 L 190 0 Q 200 0 200 10 L 200 90 Q 200 100 190 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><path fill="none" stroke="#333333" d="M 10 0 M 10 0 L 190 0 Q 200 0 200 10 L 200 90 Q 200 100 190 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,275,134) translate(8,8)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="26.634765625" y="11">Docker container web2</text></g><g transform="translate(0,0) matrix(1,0,0,1,281,204)"><g transform="translate(4,4) scale(1.0055555555555555,1.05)"><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#000000" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z" opacity="0.294117647"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="rgb(0,0,0)" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-opacity="0" stroke-miterlimit="10" stroke-width="2" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#FFFFFF" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#333333" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,284.6,204) translate(8,3)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="49.72128906249998" y="11">spawn-fcgi</text></g><g transform="translate(0,0) matrix(1,0,0,1,281,164)"><g transform="translate(4,4) scale(1.0055555555555555,1.05)"><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#000000" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z" opacity="0.294117647"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="rgb(0,0,0)" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-opacity="0" stroke-miterlimit="10" stroke-width="2" opacity="0.294117647"/></g></g></g></g></g><g><g transform="translate(0,0) scale(1.8,0.2)"><g><path fill="#FFFFFF" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.5555555555555556,5)"><path fill="none" stroke="none" d="M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#333333" d="M 0 0 M 0 0 L 180 0 Q 180 0 180 0 L 180 20 Q 180 20 180 20 L 0 20 Q 0 20 0 20 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,284.6,164) translate(8,3)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="58.72128906249998" y="11">php-cgi</text></g><g transform="matrix(1,0,0,1,341,104)"><image width="60" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAB2UlEQVRoQ+2XMU7DQBREd0OBqIAypjE3oIs7wgngBuQEMT4B4QQmnCDcAE4AqXA6bgANUAIVosny144lxzFClrLzhf3dWI6inZ1589eJVi27dMv8KjHcdOJCWAg3LAGpdMOArtgRwkK4YQmwVPp1HBiboxcmcH24oDUqhoFjI4TXGfZbHPTVhk7ntXgZY+7ts9a6X6XXHT5M17mP4lpOCdOsWmOHNTc/pcOsMoia61R+3alhS9h01F2djeq5OupGSdoAF5dTw9mJ3Luh8h5nm7ftLksWPzO3Xjg7cWE0X9O5YaLsE+WnzO9inPVCtvRMdPeJ7vO/NpxRDiZ0O/3DyDXN7sClWbu2c8JWZIly3uySOoIuzLAVehkHI0r3vIogFf1iL0xGrulCDb/HBztfnU2aT729bMx8bs2//d3o8aNRhn+jjKQLJWzFVilj6cINpyf2Ve9MGR2n9dUm8oazS0SVcw3IKV02RK8pmuX0/7CPNMtC2IrSa2pg7/QjY9IKw2iTRT2WSothYAJCGBg2i5QQZokdKCqEgWGzSAlhltiBokIYGDaLlBBmiR0oKoSBYbNICWGW2IGiQhgYNouUEGaJHSgqhIFhs0gJYZbYgaJCGBg2i1TrCP8AIEx0Pf3XeJ8AAAAASUVORK5CYII=" transform="translate(0,0)"/></g><g transform="translate(0,0) matrix(1,0,0,1,51,300)"><g><g transform="translate(0,0) scale(2,0.5)"><g><g transform="scale(0.5,2)"><path fill="#FFFFFF" stroke="none" d="M 60 0 L 140 0 L 200 15 L 200 35 L 140 50 L 60 50 L 0 35 L 0 15 L 60 0 Z"/><path fill="none" stroke="#274e13" d="M 60 0 M 60 0 L 140 0 L 200 15 L 200 35 L 140 50 L 60 50 L 0 35 L 0 15 L 60 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,55,300) translate(8,11)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="67.65624999999999" y="11">Volume</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="9.636718749999986" y="25">/var/www/clients/client1/web1</text></g><g transform="translate(0,0) matrix(1,0,0,1,271,299.9999999999999)"><g><g transform="translate(0,0) scale(2,0.5)"><g><g transform="scale(0.5,2)"><path fill="#FFFFFF" stroke="none" d="M 60 0 L 140 0 L 200 15 L 200 35 L 140 50 L 60 50 L 0 35 L 0 15 L 60 0 Z"/><path fill="none" stroke="#274e13" d="M 60 0 M 60 0 L 140 0 L 200 15 L 200 35 L 140 50 L 60 50 L 0 35 L 0 15 L 60 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,275,299.9999999999999) translate(8,11)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="67.65624999999999" y="11">Volume</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="9.636718749999986" y="25">/var/www/clients/client1/web2</text></g><g transform="matrix(1,0,0,1,121,204)"><image width="60" height="100" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABkCAYAAADaIVPoAAAB4ElEQVR4Xu2ZQU7CQABFO22iS9BegIWBYyh7QY7iDcQbeBQE93INiAsuUC1LTdpxpkDSlHV/k+F1RULSyX/vz2eBiS7sMReWNyJw6MYxjOHACFDpwISexcEwhgMjQKUDE8poUWkqHRgBKh2YUFaaSlPpwAhQ6cCEstJUmkoHRqCTSt899h88x6+PfK3m2Ung0ST1Qe1mlY2DD+ztJnHy6YMWZTFWW5Ybruya6L4ya6O12rI08MluacvC541NnKgtSwOf7Fqn1j/G/x8vtiwLfLLrwu5d1t5xrPYudE9pWRa4ZvfVhXw5XGF7+Cy0LAlct/sXl4PrMvnxgX/j4uaqjHdKy5LAw0m6MCZ68ka3y+/5aJpWl3izzMxwejv3lq2N3rerbNb277Ik8GDW7zuTz87u226R5/XAze+CCNwMUQ/cdsDm+yWGCVy7wxhumQCVbhlw9XpGS0H5eAaVVsCm0grKVFpImUoLYbPSCthUWkGZlRZSptJC2Ky0AjaVVlBmpYWUqbQQNiutgE2lFZRZaSFlKi2EzUorYFNpBWVWWkiZSgths9IK2FRaQZmVFlKm0kLYrLQCNpVWUGalhZSptBA2K62ATaUVlFlpIWUqLYTdyUoL850dReAu6SvOvjjD//u/WHTnwebGAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,341,204)"><image width="60" height="100" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABkCAYAAADaIVPoAAAB4ElEQVR4Xu2ZQU7CQABFO22iS9BegIWBYyh7QY7iDcQbeBQE93INiAsuUC1LTdpxpkDSlHV/k+F1RULSyX/vz2eBiS7sMReWNyJw6MYxjOHACFDpwISexcEwhgMjQKUDE8poUWkqHRgBKh2YUFaaSlPpwAhQ6cCEstJUmkoHRqCTSt899h88x6+PfK3m2Ung0ST1Qe1mlY2DD+ztJnHy6YMWZTFWW5Ybruya6L4ya6O12rI08MluacvC541NnKgtSwOf7Fqn1j/G/x8vtiwLfLLrwu5d1t5xrPYudE9pWRa4ZvfVhXw5XGF7+Cy0LAlct/sXl4PrMvnxgX/j4uaqjHdKy5LAw0m6MCZ68ka3y+/5aJpWl3izzMxwejv3lq2N3rerbNb277Ik8GDW7zuTz87u226R5/XAze+CCNwMUQ/cdsDm+yWGCVy7wxhumQCVbhlw9XpGS0H5eAaVVsCm0grKVFpImUoLYbPSCthUWkGZlRZSptJC2Ky0AjaVVlBmpYWUqbQQNiutgE2lFZRZaSFlKi2EzUorYFNpBWVWWkiZSgths9IK2FRaQZmVFlKm0kLYrLQCNpVWUGalhZSptBA2K62ATaUVlFlpIWUqLYTdyUoL850dReAu6SvOvjjD//u/WHTnwebGAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="translate(0,0) matrix(1,0,0,1,491,299.9999999999999)"><g><g transform="translate(0,0) scale(2,0.5)"><g><g transform="scale(0.5,2)"><path fill="#FFFFFF" stroke="none" d="M 60 0 L 140 0 L 200 15 L 200 35 L 140 50 L 60 50 L 0 35 L 0 15 L 60 0 Z"/><path fill="none" stroke="#274e13" d="M 60 0 M 60 0 L 140 0 L 200 15 L 200 35 L 140 50 L 60 50 L 0 35 L 0 15 L 60 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,495,299.9999999999999) translate(8,11)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="67.65624999999999" y="11">Volume</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="43.313476562499986" y="25">/var/lib/php5-fpm</text></g><g transform="matrix(1,0,0,1,382.4213562373095,204)"><image width="171" height="100" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKsAAABkCAYAAAD5VsB4AAAEcUlEQVR4Xu2cUU4TURSG57aYkPYBXYG4AtkBZQXW4rv4aIQEViCsQJJifBTeBesKrDuoK5AdCA8tGDq93tt2tDYa52lm/pyvLwxwk/uf//9yMp3MPS7hgwMiDjgRncjEgQRYgUDGAWCViQqhwAoDMg4Aq0xUCAVWGJBxAFhlokIosMKAjAPAKhMVQoEVBmQcAFaZqBAKrDAg4wCwykSFUGCFARkHgFUmKoQCKwzIOACsMlEhFFhhQMYBYJWJCqHACgMyDgCrTFQIBVYYkHEAWGWiQiiwwoCMA8AqExVCgRUGZBwAVpmoEAqsMCDjALDKRIXQUmBdfdZtRetvP+z1iQAH8jpQCqzNTrefOOeH57tbeYWyDgcKhzV21bp3n6P1qfNbdFcgzOtA4bDOu+rmXGCf7po3KtYVCmvWVX1oqtH6sHmd7gqEeR0oFNasq/pA6xTW2e5017xpGV9XGKwL96rX3vu1GazuOvxYo7sapzBn+YXB+rur+qMA6euoL0CbXdNdcwZmeVkhsC521WF6t96s3/seTQ/XD8L1Jd3VMoL5ay8E1sb2SS9s9CR20tHF3mFz+2R61xqeBLhGp3sYO234w6fR+W47v3RWWnOgEFiT9pv7jdrK/mgyPk56B1eLsC7/z1oA1JvfgWJgXdLzB6z5tbLSuAPAahwApfKBVSkt41qB1TgASuUDq1JaxrUCq3EAlMoHVqW0jGsFVuMAKJUPrEppGdcKrMYBUCofWJXSMq4VWI0DoFQ+sCqlZVwrsBoHQKn8cmCdzQ3Y5DiLEirlay0F1vAy9mnY+PnEJwc3F7vH5duAAgUHSoG12Xm7kzj/PhjE2SsFSiqisRRY4+kAzl5VhAAhGeXAGgzKzl6FI65Xw8n4UTzuIuQbUktwoDRYY62/RgkFYNNa8pS5VyUQILRlqbBObwdqK734ZGDuWX+S+J6f1Ae3/sdXuq0QSQVILRfWeYHzW4L98Ot0UgsfMw70wyipS+/84CYdn/2vOVUC1iya+JQgCG8579dDt90AXjPQxvE84TuLOx1O7o7+BW2lYDUUDaUGB+KkHjdxG2FAXysOQYmmhGEnA5e6F8Peq8GyScAKNpVwYLX9br1WG/fCdJ7HEdhRere13GGBtRJRIWLqwGxyT38O7FkYJ7Wz6AywwkmlHIgdtl5Pv0VRaVp/dNt7eZkJBNZKRYWY6ED27kg2yA9Y4aKyDjS2u22XuI/hCcGX4cVeC1grGxXC5u+OzGb4hrGowAoTlXbgb5MmuWetdGR2xTU6J5fh+evDxS9ZwGqXh0pXnr3ktHiaBFgrHZldccBqN3u5yoFVLjK7goHVbvZylQOrXGR2BQOr3ezlKgdWucjsCgZWu9nLVQ6scpHZFQysdrOXqxxY5SKzKxhY7WYvVzmwykVmVzCw2s1ernJglYvMrmBgtZu9XOXAKheZXcHAajd7ucqBVS4yu4KB1W72cpUDq1xkdgUDq93s5SoHVrnIELzoAEex4UHGAWCViQqhwAoDMg78BDVS53Rvq0MWAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,162.4213562373095,204)"><image width="417" height="125" preserveAspectRatio="none" xlink:href="data:image/png;base64,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" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,121,154)"><image width="60" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABPklEQVRoQ+2W4QnCMBSEmwnUDdxEO4GO4gbWDRxFJ7CjuIE6QbzKC8SIP3OB1xOKgUIf333Xp6Gb2SfMjLcTsHfjMizDzhJQpZ0J/cGRYRl2loAq7UyolpYqrUo7S0CVdiZUW1qVVqWdJaBKOxOqLa1Kq9LOEmhS6djF7ZRj6MLIzrMV8AQaAdy7Bza7NwPt2ZbphgE82d0Y8Mi2TAUu7KY2Uy2zgXO7CZhqmQac2X2BdGG06UyzzAROdk+APRpwOtMsU4ALu2vAPgx4he+7GadYZgFfALXDdcJWHhBAtD8eAefBjF9xb1/7d5kFvATIAdcZUM8C+OueC+ASIgeuDVg+n2JYwNk7LMOVE1ClKwf8ebyWFiNlm6FKM8KeXaUZof6b0aTSAiYmIMPEsJuMkuEmsROHyjAx7CajZmf4DYHEWz3yjPbZAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,341,154)"><image width="60" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABPklEQVRoQ+2W4QnCMBSEmwnUDdxEO4GO4gbWDRxFJ7CjuIE6QbzKC8SIP3OB1xOKgUIf333Xp6Gb2SfMjLcTsHfjMizDzhJQpZ0J/cGRYRl2loAq7UyolpYqrUo7S0CVdiZUW1qVVqWdJaBKOxOqLa1Kq9LOEmhS6djF7ZRj6MLIzrMV8AQaAdy7Bza7NwPt2ZbphgE82d0Y8Mi2TAUu7KY2Uy2zgXO7CZhqmQac2X2BdGG06UyzzAROdk+APRpwOtMsU4ALu2vAPgx4he+7GadYZgFfALXDdcJWHhBAtD8eAefBjF9xb1/7d5kFvATIAdcZUM8C+OueC+ASIgeuDVg+n2JYwNk7LMOVE1ClKwf8ebyWFiNlm6FKM8KeXaUZof6b0aTSAiYmIMPEsJuMkuEmsROHyjAx7CajZmf4DYHEWz3yjPbZAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="translate(0,0) matrix(1,0,0,1,511,194)"><g><g transform="translate(0,0) scale(1.6,0.4)"><g><path fill="#FFFFFF" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z"/><g transform="scale(0.625,2.5)"><path fill="none" stroke="none" d="M 0 0 L 160 0 Q 160 0 160 0 L 160 40 Q 160 40 160 40 L 0 40 Q 0 40 0 40 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#333333" d="M 0 0 M 0 0 L 160 0 Q 160 0 160 0 L 160 40 Q 160 40 160 40 L 0 40 Q 0 40 0 40 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,514.2,194) translate(8,13)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="28.109570312499983" y="11">Apache / Nginx</text></g><g transform="matrix(1,0,0,1,561,204)"><image width="60" height="125" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAB9CAYAAAD++AC7AAACmklEQVR4Xu2b3U0CQRRGdwWNgQewA61ErUAjliFRK1ArUANlqNEKxEq0A/EBYvxhnIFdWND4xrnJ7OcLRBJuvnO+vbzMpEnJ/tKS5U0UOHbjMizDkRFQpSMT+iuODMtwZARU6ciEammp0qp0ZARU6ciEakur0qp0ZARU6ciEakur0qp0ZARMKr1+2NkJHN9v2j2ap0ng+kGnl6SpG9we7UYfONituPQxBP1O3S5tGTec2d3OzPZoy2jg3K7zckNgP7xCW0YD53adTzwOPJmOWsYCF57dN+dcYxI4ffMvDdIyFnhm1134oGchsA+ev8csI4GLdgffn5v1yuprCOzfb/j3L6RlJHCt1b33g/aC0eFd+7ze6o6fYr+h09pB5zwY9/94GN4e7S/7dxkJnOxfNmsr1ZPh6OsquT/tFwMvfhZH4IUUc4GXnXDh+xnDCjx7hmHBNifxVGlQs55hArYqTVDOZqjSBGxVmqCsSoOUVWkQtrY0AVuVJihrS4OUVWkQtrY0AVuVJihrS4OUVWkQtrY0AVuVJihrS4OUVWkQtrY0AVuVJihrS4OUVWkQtrY0AVuVJihrS4OUVWkQNrOlx4dL146Ho4/rvw+Xzj5bdnYkcOmOD08PiDvXH4y+tuYOiK9Un/1dgCZ1DQAxHGr67xUA554Gd+2dZdc5fD8WuGjZn35vZsP7pF008LzlicvxNR7QLh54elEru7jk7zrg1/GwSufP59xVPNgubjgMLN1ly+mz7N9Qm7m4/fFK55bDK32V1qTSxG/tfzNMDFuGVmBL+sRsGSYoW86QYUv6xGwZJihbzpBhS/rEbBkmKFvOkGFL+sRsGSYoW86QYUv6xGwZJihbzpBhS/rEbBkmKFvOkGFL+sTs0hn+AT0WpI2CU6o8AAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="translate(0,0) matrix(1,0,0,1,511,50)"><g><g transform="translate(0,0) scale(1.6,0.5)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(0.625,2)"><path fill="#FFFFFF" stroke="none" d="M 10 0 L 150 0 Q 160 0 160 10 L 160 40 Q 160 50 150 50 L 10 50 Q 0 50 0 40 L 0 10 Q 0 0 10 0 Z"/><path fill="none" stroke="#333333" d="M 10 0 M 10 0 L 150 0 Q 160 0 160 10 L 160 40 Q 160 50 150 50 L 10 50 Q 0 50 0 40 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,514.2,50) translate(8,19)"><text fill="#000000" stroke="none" font-family="Arial" font-size="11px" font-style="normal" font-weight="normal" text-decoration="none" x="22.342724609374983" y="10">PHP_FPM_Docker</text></g><g transform="translate(0,0) matrix(1,0,0,1,511,120.00000000000006)"><g><g transform="translate(0,0) scale(1.6,0.5)"><g><path fill="none" stroke="none" d="M 10 0 L 90 0 Q 100 0 100 10 L 100 90 Q 100 100 90 100 L 10 100 Q 0 100 0 90 L 0 10 Q 0 0 10 0 Z"/><g transform="scale(0.625,2)"><path fill="#FFFFFF" stroke="none" d="M 10 0 L 150 0 Q 160 0 160 10 L 160 40 Q 160 50 150 50 L 10 50 Q 0 50 0 40 L 0 10 Q 0 0 10 0 Z"/><path fill="none" stroke="#333333" d="M 10 0 M 10 0 L 150 0 Q 160 0 160 10 L 160 40 Q 160 50 150 50 L 10 50 Q 0 50 0 40 L 0 10 Q 0 0 10 0 Z" stroke-miterlimit="10" stroke-width="2"/></g></g></g></g></g><g transform="scale(1,1) matrix(1,0,0,1,514.2,120.00000000000006) translate(8,19)"><text fill="#000000" stroke="none" font-family="Arial" font-size="11px" font-style="normal" font-weight="normal" text-decoration="none" x="44.03657226562498" y="10">ISPConfig</text></g><g transform="matrix(1,0,0,1,6.5,5.5)"><image width="589" height="187" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAk0AAAC7CAYAAAB4rqp1AAAMwElEQVR4Xu3dTY5V1xUF4EOcRhqRcHrpmRkAiWm7PIIkkgcAIwj2BMAjsD0Cl2eAlAFQtG0HmAEzsNP3T/a1Xkn1axaWqlzF+kp6oqja7967v7sbS+eeBzeWLwIECBAgQIAAgdcK3HhthQICBAgQIECAAIElNBkCAgQIECBAgEAg8Eah6b9rffDTWrfmTbeCYyshQIAAAQIECFxJgZ/XevWHef1trWfpBb42NH291t4U/XsO+M/0oOoIECBAgAABAtdI4MmEqC/urXXwa9d8bmh6vta7P6712bz5/pEDvJzvX2zp7BpBuFQCBAgQIECAwDGB3VOzO/PD20d+sf/OWh/fXev7s7jODE1bYPphrafzy+1g/5uQ9Pkf53XeQdwHAgQIECBAgMB1FNhlnoeTeR7O9d+czPNiMs+HZ2WeM0PTN2t9uVthejmJ6/688cV1hHDNBAgQIECAAIFEYMLTnXnCtr9bedp/f60HJ993KjTt9jA93VaYJjDtCUwJtRoCBAgQIEDgugvsgtPBbsXpw5N7nE6FplllejLF/5jlqU+n+PF1B3D9BAgQIECAAIFUYBaPHk84ejT1X81q0/2j7zsrNE1eWmtWmf5iD1NKrI4AAQIECBB4GwR2H4T7butlQtOxnHTsL0cezb2cwm0TuC8CBAgQIECAQJXAPHXb9nLfngWku0e3KR0LTd/OMtQsM22bwE8tSVVpaZYAAQIECBCoFTjcqjQA/5pFpG3b0i9fJ1eafnmOZz9T7ZxonAABAgQI1Asc7ms6mYeEpvrRAECAAAECBAgcFRCazAMBAgQIECBAIBAQmgIkJQQIECBAgAABockMECBAgAABAgQCAaEpQFJCgAABAgQIEBCazAABAgQIECBAIBAQmgIkJQQIECBAgAABockMECBAgAABAgQCAaEpQFJCgAABAgQIEBCazAABAgQIECBAIBAQmgIkJQQIECBAgAABockMECBAgAABAgQCAaEpQFJCgAABAgQIEBCazAABAgQIECBAIBAQmgIkJQQIECBAgAABockMECBAgAABAgQCAaEpQFJCgAABAgQIEBCazAABAgQIECBAIBAQmgIkJQQIECBAgAABockMECBAgAABAgQCAaEpQFJCgAABAgQIEBCazAABAgQIECBAIBAQmgIkJQQIECBAgAABockMECBAgAABAgQCAaEpQFJCgAABAgQIEBCazAABAgQIECBAIBAQmgIkJQQIECBAgAABockMECBAgAABAgQCAaEpQFJCgAABAgQIEBCazAABAgQIECBAIBAQmgIkJQQIECBAgACBCU17o7C9Du7N61DkxlGa85IVPgIECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBIQmiImRQQIECBAgEC7gNDUPgH6J0CAAAECBCIBoSliUkSAAAECBAi0CwhN7ROgfwIECBAgQCASEJoiJkUECBAgQIBAu4DQ1D4B+idAgAABAgQiAaEpYlJEgAABAgQItAsITe0ToH8CBAgQIEAgEhCaIiZFBAgQIECAQLuA0NQ+AfonQIAAAQIEIgGhKWJSRIAAAQIECLQLCE3tE6B/AgQIECBAIBI4Fpq+Xevhz2t9Nu/84v35PjqCIgIECBAgQIBAgcDJlaa9+cHTCU7P7q21V9C/FgkQIECAAAECkcCx0PR8rXd/XOu77Z2z0nTsd9HRFBEgQIAAAQIE3lKBU8Hom7VeTK+35xcP/r7W/lvat7YIECBAgAABAm8kcCo0zb6m+/N47ss5yqt31rp7d63v3+iIv7H467Uez8V8MOf+dB4NHvzGw3gbAQIECBAgQOBCBM58BHe42jRn3J/HdA8u5MwnDjrnfDU/em/34wPh6TLUnYMAAQIECBBIBc4MTbO36c7sbdpWe25OeNke13180as/236qH+YTe3NB26f2bgpP6S1UR4AAAQIECFyGwLmbvXfB6cnh6s8uPG1B6mAe213YI7uf1vrznOOjubCP5pzb99vX8/n7o9lj9Z/LQHEOAgQIECBAgMBJgV/9hNw5qz+/p+IW2B7MPqtXv+dFODcBAgQIECDQJxD/swKzUXtveA5flyH11znJe3OBf9pONqtOk+HWJxf9mPAyGnMOAgQIECBA4PoJxKHpslrbfXrv0Zzv1i4sPZs/HwtLl3UHnIcAAQIECBA4S+DKhCZhyYASIECAAAECV1ngyoSmw39yYPsvXKwsXeWRcW0ECBAgQKBT4MqEpt2eqeUxXOcg6poAAQIECFx1gSsTmq46lOsjQIAAAQIEugWEpu77r3sCBAgQIEAgFBCaQihlBAgQIECAQLeA0NR9/3VPgAABAgQIhAJCUwiljAABAgQIEOgWEJq677/uCRAgQIAAgVBAaAqhlBEgQIAAAQLdAkJT9/3XPQECBAgQIBAKCE0hlDICBAgQIECgW0Bo6r7/uidAgAABAgRCAaEphFJGgAABAgQIdAsITd33X/cECBAgQIBAKCA0hVDKCBAgQIAAgW4Boan7/uueAAECBAgQCAWEphBKGQECBAgQINAtIDR133/dEyBAgAABAqGA0BRCKSNAgAABAgS6BYSm7vuvewIECBAgQCAUEJpCKGUECBAgQIBAt4DQ1H3/dU+AAAECBAiEAkJTCKWMAAECBAgQ6BYQmrrvv+4JECBAgACBUEBoCqGUESBAgAABAt0CQlP3/dc9AQIECBAgEAr8HzxvP+lIFH0yAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,441,70.5)"><image width="74" height="122" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAAB6CAYAAAAYqsXcAAADXUlEQVR4Xu3dPW4TURiF4RuQqJDIDgg7SATUZAvUNGEFpKXC6eiAFRBWADuIqQHBDggdHaSj4O/cMEaDlUHvRB55MnotWc7PiTX3yZnrqb7ZKD6QwAZKGSpCwRJMHup9KVu/Srme5y40OY3dLOWgnZ8kVHA2f5byIDh7WexWH6BF9lb592ybHNSbNCeLepkFbzaLPgnYh3w97wN2u5TZZBv1Lg0KyvO6wLy+zsssC+4F1IU5mUbldNv+UcpRbVKQDpYb0adNZ2UnA/X2D1LdsF9kf6l700ofk4Bq2pSXcnI5m/dOKV9XqpQ3mwRUNvBZFvIo63mWNu2vGqm+31Sg5lnInaznbqBeCdUhkP3pY361ldPuRk67Y6G6ofJBV8ryReIqwSZx6qVRQpFWCEWUkhFKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYzZKKCgAYnV2eYYpf0n0JOMlF6O5wV/2i1z48ZLN/PKjOpY7E6d3+y2fp6cANfic4Mp54aGykZ+Ov81zsDnBo4Vq3zMh8393usZuZyL+fk65J1nIp+xPFWuwx6ga1QKqo7ZPN+Yc4P3cUeNwWaA9EX/oNo2mUWcBdd0zoZWdNXiDTMRf/sestVHNoh8H5V4O7Go9uHrHjRzU4aU/d974+8jtS7bzzW7zXFwGDDbofTRQzf5Sp9r3vvZZ9R06yMa2tkbVNn3PZpwDeJgDvdK06XPdmPP8dsZ/9DjZeZo2H2q4+//A1ga1OKgWWN3ArzU/P8yn3cE6QLqw1g51UcBGA9UF1nV5QPaVVWZGB9UGyyfdXq6hnq5ywed9r9FCnXdBQ/2dUFBWKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIzZKKGgAIz9Bv1yD4qLAxTeAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,561,70)"><image width="60" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABVklEQVRoQ+2VwW3CQBRExwp3SAe0gARnSAWhFDoAOqAUqADfE4kW6CDhDjJ/rbW0MuK4s9L3+MJaSP5688bfFQZ2VQPjhYC9G5dhGXaWgCrtTOgLjgzLsLMEVGlnQrW0VGlV2lkCqrQzodrSqrQq7SwBVdqZUG1pVVqVdpZAkUr/AKuQ4wKo2XmWAq5tcDMHvtwDB7sGew6gjQGzLdMNG3Cwu4xma7ZlKnBqt6sy2zIbOLXbMVMt04ATuzcjHUfa9sy0zARu7Rrc3n63cWl1Z5plCnBq9wOYPoC/AGznTztfmZYpwL/A0aC+g137DO3s3o6AbejKwthF4ye7X+f+LlOAL8DkDmxGwGEG/KfA/f9cAPchUuDcgP3nUwwLOHmHZThzAqp05oDbx2tpMVKOM1RpRtiDqzQj1HczilRawMQEZJgYdpFRMlwkduJQGSaGXWTU4Aw/AecaTj3MZ8J2AAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,561,164)"><image width="60" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABgklEQVRoQ+2X0U3DQBBEN9BAKIESkOCbUAF0khKAEugEKiB8g0QJlIAbgDAb2dHJUvI3s8ie/OQcSzuZeXt7ukXM7LOYmd+w4akTN2ETJiTwEbHNspehnyElLW3DhC46VNKEFWG7pRUp9xpuaUXYbmlFym5pYcpuaWHYntKMsD8jlr8R65OIp4uIrm3p8TuGfltTQhgGnyF6iyvS41XEQ2v4Hc/4E/d4/4Lb090kDMPUCqZeYaY7jTj/ifhOY1ifYf2F5RJh3CCMzSQMpwmY3sD0dVLuiealeLfG9xvMrthms76kpXvDe8pJtDfXKelKDbeUW5JKuhWGB8p7z6q9OwjKWnoQHPZyPqvpygmP9nIalkxm+Tk8nr5JOX9TTeb/YHh3BCnO3XHY8j2sOGuPadhwNQG2vgmzE66ub8LVBNj6JsxOuLq+CVcTYOubMDvh6vomXE2ArW/C7ISr65twNQG2vgmzE66ub8LVBNj6JsxOuLq+CVcTYOubMDvh6vqzI/wHsZFYPS+ro2UAAAAASUVORK5CYII=" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,701.4333333333334,56.6666666666668)"><image width="73" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEkAAAA8CAYAAAAqnJeuAAABnElEQVR4Xu3XwW3CQBSE4d2IGiLhRsItHQVcQUgHcQfQQTqIuUFySQlwCF3gZS2MsOIontt7kf49WiP58Wl2vcTAGhWIowkCASShBCCBJAgIEZoEkiAgRGgSSIKAEKFJIAkCQoQmgSQICBGaBJIgIERoEkiCgBChSSAJAkKEJoEkCAgRmgSSICBEzJp0rB7e8nzvxXxXCXOaRgyRZnX+5Y8hhX2MYTmdb9emEn+83B7pOlzGCqkpi/KjbZir5QfphlXHFF6m5bZtmovlD6mHNUmn8r78/LKW8oOUUgj5cPq58uPV3aVZeyuswVTf1WyZHz5bDZQP8ow1fLsllk+k1mgItY5N/goaNMrRduva4wjn2mcfSL9vsc2kOS04uNvL5HBtum3FFeBYdTfuG9IhNM2Cy2SvNT2kQ9ecldkXdeTFhmdS/oMbQ1087V694pgf3N5h+vOZNQmk/yQgzEqTQBIEhAhNAkkQECI0CSRBQIjQJJAEASFCk0ASBIQITQJJEBAiNAkkQUCI0CSQBAEhQpNAEgSECE0CSRAQImfN5289ZTscvwAAAABJRU5ErkJggg==" transform="translate(0,0)"/></g><g transform="scale(1,1) matrix(1,0,0,1,749.6666666666669,78.99999999999994) translate(2,0)"><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="11">is base image</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="25">&#160;</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="39">configures</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="53">&#160;</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="67">is mounted</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="81">&#160;</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="95">launches</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="109">&#160;</text><text fill="#000000" stroke="none" font-family="Arial" font-size="12px" font-style="normal" font-weight="normal" text-decoration="none" x="0" y="123">unix socket comm.</text></g><g transform="translate(0.5,0.5) matrix(1,0,0,1,694.3333333333334,66.99999999999994)"><g><g transform="translate(0,0) scale(1.6400000000000006,1.49)"><g><path fill="rgb(255,255,255)" stroke="none" d="M 0 0 L 100 0 Q 100 0 100 0 L 100 100 Q 100 100 100 100 L 0 100 Q 0 100 0 100 L 0 0 Q 0 0 0 0 Z" fill-opacity="0.008"/><g transform="scale(0.6097560975609754,0.6711409395973155)"><path fill="none" stroke="none" d="M 0 0 L 164.00000000000006 0 Q 164.00000000000006 0 164.00000000000006 0 L 164.00000000000006 149 Q 164.00000000000006 149 164.00000000000006 149 L 0 149 Q 0 149 0 149 L 0 0 Q 0 0 0 0 Z"/><path fill="none" stroke="#000000" d="M 0 0 M 0 0 L 164.00000000000006 0 Q 164.00000000000006 0 164.00000000000006 0 L 164.00000000000006 149 Q 164.00000000000006 149 164.00000000000006 149 L 0 149 Q 0 149 0 149 L 0 0 Q 0 0 0 0 Z" stroke-miterlimit="10"/></g></g></g></g></g><g transform="matrix(1,0,0,1,701.4000000000001,85.1000000000002)"><image width="73" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEkAAAA8CAYAAAAqnJeuAAABYklEQVR4Xu3WTWoCQRRF4WfIXLeSFSRLcgdxA4JZl4QsIS5BiVN/XkH3RJE+I+sFToP05IKvv75VXbPwmhSYTSYMhEigBCKJBARAxCaJBARAxCaJBARAxCaJBARAxCaJBARAxCaJBARAxCaJBARAxCaJBARAxCaJBARAxCaJBARAxCaJBARApESTviOWOev8JeLrLWIP5n5qpDvST8TiFPGbT73I3z4H2lTD6o7UKrGN+MjbKod5HypSCqsE0rh2qmLdIeWg7Y1+PnXRT//ZX8607rUM/wvS8ZJIr7lf9djYyy23ocVtj2rXIXE2vXDGgpdAantRRZwySMMRYNfOSVWac7tFlmhSO0ye85zUe1k9+n6UQJr+uPVNiAT8RRIJCICITRIJCICITRIJCICITRIJCICITRIJCICITRIJCICITRIJCICITRIJCICITRIJCICITRIJCICITRIJCICITQJIVwU7NT1pjC2yAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,701.0000000000001,113.60000000000008)"><image width="73" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEkAAAA8CAYAAAAqnJeuAAABd0lEQVR4Xu3ZQUqCQRyG8RmFtn54ghZRx8gDVHSUbqAXCOwm3SiPYNTKhdN8NW6M8Fk5/+BpI8kLyo9nRsGc/DspkE8uHCSRQAQiiQQEwMSSRAICYGJJIgEBMLEkkYAAmFiSSEAATCxJJCAAJpYkEhAAE0sSCQiAiSWJBATAxJJEAgJgYkkiAQEwCVHSzf38qeQ02032L5vX7Ra877NOuiNdPg7DxX7yllMeSioj0DoaVnekMYmru2ExzdNV/an0dvw/GlYIpMPZiYr1C+n6Yb6q6S/PeuiPXqyU8v1Mzj9vr5b1UR+eex3D/4L02ZDWPS72iMdtWe+mRSvovV3kXXAOgYdAandROJwwSO0rwKbeg7N694Qo5/g+DlFS+zI51Iu567H668MqBFLPT1Ly2iIBJZFEAgJgYkkiAQEwsSSRgACYWJJIQABMLEkkIAAmliQSEAATSxIJCICJJYkEBMDEkkQCAmBiSSIBATCxJJGAAJhYEkD6ApI+cD1Uj7aSAAAAAElFTkSuQmCC" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,700.6,141.10000000000008)"><image width="73" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEkAAAA8CAYAAAAqnJeuAAABUUlEQVR4Xu3WQQrCMBRF0XYFuiNdkjvQDQi6Ql2ConP9H9KJIr2j5gu3EDp50PT0Jc04eM0KjLMJA4NIoAQiiQQEQMQmiQQEQMQmiQQEQMQmiQQEQMQmiQQEQMQmiQQEQMQmiQQEQMQmiQQEQMQmiQQEQMQmiQQEQMQmiQQEQKREk17DaxdzXcU4j8N4A/NeNNIdKYDW8caXGHlPoFM1rO5IWYmA2sbtEGPTKlIKqwTStHaqYn0hxUTzi+4XXfTzD3tE5NhrGf4L0rMhnXps7BWXW7Y496i87m0j74IzFbwEUtuLyuGUQWpHgGtMKM9JJZrzuUVWaVIeJvOc1HVZ/fp/lECa/7n1TYgE/EUSCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0SCQiAiE0CSG8XLDg9H01dfAAAAABJRU5ErkJggg==" transform="translate(0,0)"/></g><g transform="matrix(1,0,0,1,674.5333333333334,168.93333333333345)"><image width="98" height="60" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAAA8CAYAAACdIW+JAAAB/ElEQVR4Xu2XUU7CQBRFZwoaw4/sSJZgjAvQBRDqCiwrEMICdAHGuATcEf40RmnH1yKJqRI+WpwTcxv+CsOdc+bOtN7pQhDwiBQK4SQCsggkQiIgBCAx1AiJgBCAxFAjJAJCABJDjZAICAFIDDVCIiAEIDHUCImAEIDEUCMkAkIAEkONkAgIAUgMNUIiIAQgMdQIiYAQgMRQIyQCQgASA9uIk8vFKAlukhfra/d8s2rN6/xuOOj170vv5m+P42Xr8ToeACeiEtAL/tbmOarmGkKY5k/jrO28BxeLzPt63OpaFj5MSUIwIpoCDNarSZjl5XrWWSOSfmoyUhv7lCYkuoiDC2hWqdqigEKiifixBTlXuOB6thk5W7Vtd6K9v7e22Xfsfzaf7RVtyzr8jHcgqUWULjPqZ19nQWFI/l7Ed/EhvBSJy2KcHdFEbP00hdjpvAousbPhfd7J2fDr1nQ88a5MbREM69sRBWzjRRfxZ0Lqs4EnACdil5CDPL4CGtAsKqYRzWCbFzqf5sXHVSdbVP1Cd/RQ+jCLcQbse3rAitgX/L/dlwiIUYmQCAgBSAw1QiIgBCAx1AiJgBCAxFAjJAJCABJDjZAICAFIDDVCIiAEIDHUCImAEIDEUCMkAkIAEkONkAgIAUgMNUIiIAQgMdQIiYAQgMRQIyAiPgEQHrs9sayh2AAAAABJRU5ErkJggg==" transform="translate(0,0)"/></g></g></svg>
@@ -0,0 +1,6 @@
1
+ # coding: utf-8
2
+ require 'php_fpm_docker/version'
3
+
4
+ # Module for using docker isolation for php
5
+ module PhpFpmDocker
6
+ end
@@ -0,0 +1,314 @@
1
+ # coding: utf-8
2
+ require 'php_fpm_docker/launcher'
3
+ require 'php_fpm_docker/pool'
4
+ require 'logger'
5
+
6
+ module PhpFpmDocker
7
+ # Application that is used as init script
8
+ class Application
9
+ attr_reader :php_name
10
+ def initialize
11
+ @name = 'php_fpm_docker'
12
+ @longname = 'PHP FPM Docker Wrapper'
13
+ # Create log dir if needed
14
+ log_dir = Pathname.new('/var/log/php_fpm_docker')
15
+ FileUtils.mkdir_p log_dir unless log_dir.directory?
16
+
17
+ # Init logger
18
+ log_file = log_dir.join('wrapper.log')
19
+ @logger = Logger.new(log_file, 'daily')
20
+ end
21
+
22
+ def install # rubocop:disable MethodLength, CyclomaticComplexity, PerceivedComplexity, LineLength, AbcSize
23
+ # Get launcher name
24
+ begin
25
+ puts 'Enter name of the php docker launcher instance:'
26
+ name = $stdin.gets.chomp
27
+ fail 'Only use these characters: a-z0-9-_.' \
28
+ unless /^[a-z0-9\.\-_]+$/.match(name)
29
+ rescue RuntimeError => e
30
+ $stderr.puts(e.message)
31
+ retry
32
+ end
33
+
34
+ # Get image name
35
+ begin
36
+ puts 'Enter name of the docker image to use:'
37
+ image = $stdin.gets.chomp
38
+ fail 'Only use these characters: a-z0-9-_./:' \
39
+ unless /^[a-z0-9\.\-_\/\:]+$/.match(name)
40
+ rescue RuntimeError => e
41
+ $stderr.puts(e.message)
42
+ retry
43
+ end
44
+
45
+ bin_name = 'php_fpm_docker'
46
+ bin_path = nil?
47
+ # Path
48
+ begin
49
+ ENV['PATH'].split(':').each do |folder|
50
+ path = File.join(folder, bin_name)
51
+ if File.exist? path
52
+ bin_path = path
53
+ break
54
+ end
55
+ end
56
+
57
+ if bin_path.nil?
58
+ bin_path = File.expand_path(File.join(
59
+ File.dirname(__FILE__),
60
+ '..',
61
+ '..',
62
+ 'bin',
63
+ bin_name
64
+ ))
65
+ end
66
+
67
+ rescue RuntimeError => e
68
+ $stderr.puts(e.message)
69
+ end
70
+
71
+ puts image
72
+
73
+ config_basepath = Pathname.new '/etc/php_fpm_docker/conf.d'
74
+ config_dir = config_basepath.join name
75
+ config_path = config_dir.join 'config.ini'
76
+ config_pool = config_dir.join 'pools.d'
77
+ config_content = <<eos
78
+ [main]
79
+ docker_image=#{image}
80
+ eos
81
+
82
+ initd_name = "php_fpm_docker_#{name}"
83
+ initd_path = Pathname.new File.join('/etc/init.d/', initd_name)
84
+ initd_content = <<eos
85
+ #!/bin/sh
86
+ ### BEGIN INIT INFO
87
+ # Provides: #{initd_name}
88
+ # Required-Start: $remote_fs $network
89
+ # Required-Stop: $remote_fs $network
90
+ # Default-Start: 2 3 4 5
91
+ # Default-Stop: 0 1 6
92
+ # Short-Description: starts PHP Docker launcher #{name}
93
+ # Description: Starts The PHP Docker launcher daemon #{name}
94
+ ### END INIT INFO
95
+
96
+ NAME=#{name}
97
+ DAEMON=#{bin_path}
98
+
99
+
100
+ case "$1" in
101
+ start)
102
+ $DAEMON $NAME start
103
+ ;;
104
+ stop)
105
+ $DAEMON $NAME stop
106
+ ;;
107
+ reload)
108
+ $DAEMON $NAME reload
109
+ ;;
110
+ status)
111
+ $DAEMON $NAME status
112
+ ;;
113
+ restart|force-reload)
114
+ $DAEMON $NAME restart
115
+ ;;
116
+ *)
117
+ echo "Usage: $0 {start|stop|status|restart|force-reload|reload}" >&2
118
+ exit 1
119
+ ;;
120
+ esac
121
+
122
+
123
+ eos
124
+ puts "Creating init script in '#{initd_path}'"
125
+ File.open(initd_path, 'w') do |file|
126
+ file.write(initd_content)
127
+ end
128
+ File.chmod(0755, initd_path)
129
+
130
+ unless config_dir.exist?
131
+ puts "Creating config directory '#{config_dir}'"
132
+ FileUtils.mkdir_p config_dir
133
+ end
134
+ unless config_pool.exist?
135
+ puts "Creating pools directory '#{config_pool}'"
136
+ FileUtils.mkdir_p config_pool
137
+ end
138
+ puts "Creating config file '#{config_path}'"
139
+ File.open(config_path, 'w') do |file|
140
+ file.write(config_content)
141
+ end
142
+
143
+ 0
144
+ end
145
+
146
+ def start
147
+ print "Starting #{full_name}: "
148
+ $stdout.flush
149
+
150
+ if running?
151
+ puts 'already running'
152
+ return 0
153
+ end
154
+
155
+ # init
156
+ l = Launcher.new php_name
157
+
158
+ # run daemon
159
+ self.pid = l.run
160
+
161
+ puts "done (pid=#{pid})"
162
+ 0
163
+ end
164
+
165
+ def stop
166
+ print "Stopping #{full_name}: "
167
+ $stdout.flush
168
+
169
+ unless running?
170
+ puts 'not running'
171
+ return 0
172
+ end
173
+
174
+ Process.kill('TERM', pid)
175
+
176
+ count = 0
177
+ while running? && count <= 50
178
+ sleep 0.2
179
+ count += 1
180
+ end
181
+
182
+ if running?
183
+ puts 'still running'
184
+ return 1
185
+ else
186
+ self.pid = nil
187
+ puts 'stopped'
188
+ return 0
189
+ end
190
+ end
191
+
192
+ def status
193
+ print "Status of #{full_name}: "
194
+ $stdout.flush
195
+
196
+ if running?
197
+ puts 'running'
198
+ return 0
199
+ else
200
+ puts 'not running'
201
+ return 3
202
+ end
203
+ end
204
+
205
+ def reload
206
+ print "Reloading #{full_name}: "
207
+ $stdout.flush
208
+
209
+ unless running?
210
+ puts 'not running'
211
+ return 0
212
+ end
213
+
214
+ Process.kill('USR1', pid)
215
+ puts 'done'
216
+ 0
217
+ end
218
+
219
+ def restart
220
+ ret_val = stop
221
+ return ret_val if ret_val != 0
222
+ start
223
+ end
224
+
225
+ def help
226
+ $stderr.puts(
227
+ "Usage: #{php_name} $NAME {#{allowed_methods.join '|'}}"
228
+ )
229
+ $stderr.puts(" #{php_name} install")
230
+ end
231
+
232
+ def run
233
+ method_to_call = parse_arguments(ARGV)
234
+ exit send(method_to_call)
235
+ rescue RuntimeError => e
236
+ @logger.warn(php_name) { e.message }
237
+ help
238
+ exit 3
239
+ end
240
+
241
+ private
242
+
243
+ attr_writer :php_name
244
+
245
+ # Get php name from scriptname
246
+ def full_name
247
+ "#{@longname} '#{php_name}'"
248
+ end
249
+
250
+ def parse_arguments(args)
251
+ # no args
252
+ fail 'no argument' if args.first.nil?
253
+
254
+ # install mode
255
+ return :install if args.first == 'install'
256
+
257
+ # get correct php name
258
+ self.php_name = args.first
259
+
260
+ fail 'wrong argument count' if args[1].nil?
261
+
262
+ method_to_call = args[1].to_sym
263
+
264
+ fail "unknown method #{args[1]}" \
265
+ unless allowed_methods.include?(method_to_call)
266
+
267
+ @logger.info(php_name) { "calling method #{method_to_call}" }
268
+
269
+ method_to_call
270
+ end
271
+
272
+ def allowed_methods
273
+ retval = public_methods(false)
274
+ retval.delete(:run)
275
+ retval.delete(:install)
276
+ retval
277
+ end
278
+
279
+ def pid_file
280
+ File.join('/var/run/', "#{@name}_#{php_name}.run")
281
+ end
282
+
283
+ def pid
284
+ return nil unless File.exist? pid_file
285
+ val = open(pid_file).read.strip.to_i
286
+ return nil if val == 0
287
+ val
288
+ end
289
+
290
+ def pid=(pid)
291
+ if pid.nil?
292
+ begin
293
+ File.unlink pid_file
294
+ rescue Errno::ENOENT
295
+ @logger.debug("No pid file found: #{pid_file}")
296
+ end
297
+ else
298
+ File.open pid_file, 'w' do |f|
299
+ f.write pid
300
+ end
301
+ end
302
+ end
303
+
304
+ def running?
305
+ return false if pid.nil?
306
+ begin
307
+ Process.getpgid(pid)
308
+ true
309
+ rescue Errno::ESRCH
310
+ false
311
+ end
312
+ end
313
+ end
314
+ end