You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by bu...@apache.org on 2015/05/19 20:47:42 UTC

svn commit: r951917 - in /websites/staging/slider/trunk/content: ./ docs/slider_specs/application_pkg_docker.html

Author: buildbot
Date: Tue May 19 18:47:41 2015
New Revision: 951917

Log:
Staging update by buildbot for slider

Modified:
    websites/staging/slider/trunk/content/   (props changed)
    websites/staging/slider/trunk/content/docs/slider_specs/application_pkg_docker.html

Propchange: websites/staging/slider/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue May 19 18:47:41 2015
@@ -1 +1 @@
-1680364
+1680371

Modified: websites/staging/slider/trunk/content/docs/slider_specs/application_pkg_docker.html
==============================================================================
--- websites/staging/slider/trunk/content/docs/slider_specs/application_pkg_docker.html (original)
+++ websites/staging/slider/trunk/content/docs/slider_specs/application_pkg_docker.html Tue May 19 18:47:41 2015
@@ -231,80 +231,84 @@ Latest release: <strong>0.80.0-incubatin
 
 
 <p>Below is an example of how we can use Slider to deploy a multi-component Dockerized application</p>
-<p><strong>appConfig.json</strong>
-<code>{
-    "schema": "http://example.org/specification/v2.0.0",
-    "metadata": {
-    },
-    "global": {
-    },
-    "components": {
-        "REDIS": {
-            "memcached.commandPath":"/user/local/bin/docker",
-            "memcached.options":"-d -e REDIS_PASS=\"**None**\"",
-            "memcached.statusCommand":"/usr/bin/docker ps",
-             "memcached.inputFiles": [
-                   {
-                         "containerPath": "/tmp/input",
-                         "fileLocalPath": "/Users/peter/config.json"
-                   }
-             ]
-        }
-    }
-  }</code>
-Please note that in this example, we are specifying a different docker command path than the default <code>/usr/bin/docker</code> in appConfig.json. We also specify the options that we need to include in the <code>docker run</code> command (<code>-d</code> is by default included). This is just a demo as how to include docker run command options. We also need to expose a port to listen on for the application. Thus, we are specifying <code>site.global.listen_port</code> in appConfig.json and the export config in metainfo.json below</p>
+<p><strong>appConfig.json</strong></p>
+<div class="codehilite"><pre><span class="p">{</span>
+    &quot;<span class="n">schema</span>&quot;<span class="p">:</span> &quot;<span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">specification</span><span class="o">/</span><span class="n">v2</span><span class="p">.</span>0<span class="p">.</span>0&quot;<span class="p">,</span> 
+    &quot;<span class="n">metadata</span>&quot;<span class="p">:</span> <span class="p">{</span> <span class="p">},</span> 
+    &quot;<span class="k">global</span>&quot;<span class="p">:</span> <span class="p">{</span> <span class="p">},</span> 
+    &quot;<span class="n">components</span>&quot;<span class="p">:</span> <span class="p">{</span>
+        &quot;<span class="n">REDIS</span>&quot;<span class="p">:</span> <span class="p">{</span>
+            &quot;<span class="n">memcached</span><span class="p">.</span><span class="n">commandPath</span>&quot;<span class="p">:</span> &quot;<span class="o">/</span><span class="n">user</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">docker</span>&quot;<span class="p">,</span> 
+            &quot;<span class="n">memcached</span><span class="p">.</span><span class="n">options</span>&quot;<span class="p">:</span> &quot;<span class="o">-</span><span class="n">d</span> <span class="o">-</span><span class="n">e</span> <span class="n">REDIS_PASS</span><span class="p">=</span><span class="o">\</span>&quot;<span class="o">**</span><span class="n">None</span><span class="o">**\</span>&quot;&quot;<span class="p">,</span> 
+            &quot;<span class="n">memcached</span><span class="p">.</span><span class="n">statusCommand</span>&quot;<span class="p">:</span> &quot;<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">docker</span> <span class="n">ps</span>&quot;<span class="p">,</span> 
+            &quot;<span class="n">memcached</span><span class="p">.</span><span class="n">inputFiles</span>&quot;<span class="p">:</span> <span class="p">[</span>
+                <span class="p">{</span>
+                    &quot;<span class="n">containerPath</span>&quot;<span class="p">:</span> &quot;<span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">input</span>&quot;<span class="p">,</span> 
+                    &quot;<span class="n">fileLocalPath</span>&quot;<span class="p">:</span> &quot;<span class="o">/</span><span class="n">Users</span><span class="o">/</span><span class="n">peter</span><span class="o">/</span><span class="n">config</span><span class="p">.</span><span class="n">json</span>&quot;
+                <span class="p">}</span>
+            <span class="p">]</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Please note that in this example, we are specifying a different docker command path than the default <code>/usr/bin/docker</code> in appConfig.json. We also specify the options that we need to include in the <code>docker run</code> command (<code>-d</code> is by default included). This is just a demo as how to include docker run command options. We also need to expose a port to listen on for the application. Thus, we are specifying <code>site.global.listen_port</code> in appConfig.json and the export config in metainfo.json below</p>
 <div class="codehilite"><pre><span class="n">The</span> <span class="n">config</span> <span class="n">structure</span> <span class="n">in</span> <span class="n">appConfig</span><span class="p">.</span><span class="n">json</span><span class="p">(</span><span class="n">map</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">components</span><span class="p">(</span><span class="n">list</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">component</span><span class="p">(</span><span class="n">map</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">containers</span><span class="p">(</span><span class="n">list</span><span class="p">)</span><span class="o">-&gt;</span> <span class="n">container</span><span class="p">(</span><span class="n">map</span><span class="p">)</span> <span class="n">have</span> <span class="n">to</span> <span class="n">match</span> <span class="n">the</span> <span class="n">one</span> <span clas
 s="n">in</span> <span class="n">metainfo</span><span class="p">.</span><span class="n">json</span><span class="p">.</span>
 </pre></div>
 
 
 <p>We are also adding a few configurations for the component <em>memcached</em> in appConfig.json here. These configurations are runtime parameters of the component, as opposed to being part of the Docker image definition in metainfo.json.</p>
-<p><strong>metainfo.json</strong>
-<code>{
-     "schemaVersion": "2.1",
-     "application": {
-            "name": "FAKEAPP",
-            "components": [
-                {
-                    "name": "MEMCACHED",
-                    "type": "docker",
-                    "dockerContainers": [
-                        {
-                            "name": "memcached",
-                            "image": "borja/memcached",
-                            "additionalParam": "--appendonly yes",
-                            "commandPath": "/usr/bin/docker",
-                            "statusCommand": "docker inspect ${container_id}"
-                        }
-                    ]
-                },
-                {
-                    "name": "REDIS",
-                    "type": "docker",
-                    "dockerContainers": [
-                        {
-                            "name": "redis",
-                            "image": "dockerhub/redis",
-                            "additionalParam": "--appendonly yes",
-                            "commandPath": "/usr/bin/docker",
-                            "ports": [
-                                {
-                                    "containerPort" : "11211",
-                                    "hostPort": "${conf:configuration/global/port1}"
-                                }
-                            ],
-                            "mounts": [
-                                {
-                                    "containerMount": "/tmp/confg",
-                                    "hostMount": "${conf:configuration/global/app_root}/conf"
-                                }
-                            ]
-                        }
-                    ]
-                }
-            ]
-        }
-  }</code>
-Please note, in metainfo.json (we are trying to migrate from metainfo.xml to metainfo.json as an improvement to the packaging approach) we are adding some new fields in the component section to support Docker based applications:</p>
+<p><strong>metainfo.json</strong></p>
+<div class="codehilite"><pre>{
+    &quot;schemaVersion&quot;: &quot;2.1&quot;, 
+    &quot;application&quot;: {
+        &quot;name&quot;: &quot;FAKEAPP&quot;, 
+        &quot;components&quot;: [
+            {
+                &quot;name&quot;: &quot;MEMCACHED&quot;, 
+                &quot;type&quot;: &quot;docker&quot;, 
+                &quot;dockerContainers&quot;: [
+                    {
+                        &quot;name&quot;: &quot;memcached&quot;, 
+                        &quot;image&quot;: &quot;borja/memcached&quot;, 
+                        &quot;additionalParam&quot;: &quot;--appendonly yes&quot;, 
+                        &quot;commandPath&quot;: &quot;/usr/bin/docker&quot;, 
+                        &quot;statusCommand&quot;: &quot;docker inspect <span class="cp">${</span><span class="n">container_id</span><span class="cp">}</span>&quot;
+                    }
+                ]
+            }, 
+            {
+                &quot;name&quot;: &quot;REDIS&quot;, 
+                &quot;type&quot;: &quot;docker&quot;, 
+                &quot;dockerContainers&quot;: [
+                    {
+                        &quot;name&quot;: &quot;redis&quot;, 
+                        &quot;image&quot;: &quot;dockerhub/redis&quot;, 
+                        &quot;additionalParam&quot;: &quot;--appendonly yes&quot;, 
+                        &quot;commandPath&quot;: &quot;/usr/bin/docker&quot;, 
+                        &quot;ports&quot;: [
+                            {
+                                &quot;containerPort&quot;: &quot;11211&quot;, 
+                                &quot;hostPort&quot;: &quot;<span class="cp">${</span><span class="n">conf</span><span class="p">:</span><span class="n">configuration</span><span class="o">/</span><span class="k">global</span><span class="o">/</span><span class="n">port1</span><span class="cp">}</span>&quot;
+                            }
+                        ], 
+                        &quot;mounts&quot;: [
+                            {
+                                &quot;containerMount&quot;: &quot;/tmp/confg&quot;, 
+                                &quot;hostMount&quot;: &quot;<span class="cp">${</span><span class="n">conf</span><span class="p">:</span><span class="n">configuration</span><span class="o">/</span><span class="k">global</span><span class="o">/</span><span class="n">app_root</span><span class="cp">}</span>/conf&quot;
+                            }
+                        ]
+                    }
+                ]
+            }
+        ]
+    }
+}
+</pre></div>
+
+
+<p>Please note, in metainfo.json (we are trying to migrate from metainfo.xml to metainfo.json as an improvement to the packaging approach) we are adding some new fields in the component section to support Docker based applications:</p>
 <ul>
 <li><strong>type</strong>: if specified as <code>docker</code>, Slider will start Docker containers for the application; by default it is <code>process</code>, which means Slider will instantiate the application as normal process as today</li>
 <li><strong>containers/container</strong>: the Docker image of the application, the name of which will be specified in <code>image</code> field</li>
@@ -314,31 +318,29 @@ Please note, in metainfo.json (we are tr
 <li><strong>status_command</strong>: the command that Slider can use to query the status of the application component running in the container</li>
 <li>Properties specified in metainfo.json can be overridden in appConfig.json: <strong>commandPath, options, statusCommand, inputFiles, mounts, ports</strong></li>
 </ul>
-<p><strong>resources.json</strong>
-```
-{
-  "schema" : "http://example.org/specification/v2.0.0",
-  "metadata" : {
-  },
-  "global" : {
-  },
-  "components": {
-    "slider-appmaster": {
-    },
-    "REDIS": {
-      "yarn.role.priority": "1",
-      "yarn.component.instances": "2",
-      "yarn.memory": "512"
-    },
-    "MEMCACHED": {
-      "yarn.role.priority": "1",
-      "yarn.component.instances": "2",
-      "yarn.memory": "512"
-    }</p>
-<p>}
-}
-<code>``
-With the configuration files above, Slider will ask for the required number of containers from YARN, as specified in resources.json. In each of those YARN containers, Slider will run</code>docker pull<code>to download the Docker image specified in metainfo.json. In the scope of this JIRA ticket, we are not supporting Docker images stored in private Docker hubs that require credentials to run docker pull. After downloading completes, Slider will start the containers by running, in this case,</code>/usr/bin/docker run -d borja/memcached`</p>
+<p><strong>resources.json</strong></p>
+<div class="codehilite"><pre><span class="p">{</span>
+    &quot;<span class="n">schema</span>&quot;<span class="p">:</span> &quot;<span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">example</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">specification</span><span class="o">/</span><span class="n">v2</span><span class="p">.</span>0<span class="p">.</span>0&quot;<span class="p">,</span> 
+    &quot;<span class="n">metadata</span>&quot;<span class="p">:</span> <span class="p">{</span> <span class="p">},</span> 
+    &quot;<span class="k">global</span>&quot;<span class="p">:</span> <span class="p">{</span> <span class="p">},</span> 
+    &quot;<span class="n">components</span>&quot;<span class="p">:</span> <span class="p">{</span>
+        &quot;<span class="n">slider</span><span class="o">-</span><span class="n">appmaster</span>&quot;<span class="p">:</span> <span class="p">{</span> <span class="p">},</span> 
+        &quot;<span class="n">REDIS</span>&quot;<span class="p">:</span> <span class="p">{</span>
+            &quot;<span class="n">yarn</span><span class="p">.</span><span class="n">role</span><span class="p">.</span><span class="n">priority</span>&quot;<span class="p">:</span> &quot;1&quot;<span class="p">,</span> 
+            &quot;<span class="n">yarn</span><span class="p">.</span><span class="n">component</span><span class="p">.</span><span class="n">instances</span>&quot;<span class="p">:</span> &quot;2&quot;<span class="p">,</span> 
+            &quot;<span class="n">yarn</span><span class="p">.</span><span class="n">memory</span>&quot;<span class="p">:</span> &quot;512&quot;
+        <span class="p">},</span> 
+        &quot;<span class="n">MEMCACHED</span>&quot;<span class="p">:</span> <span class="p">{</span>
+            &quot;<span class="n">yarn</span><span class="p">.</span><span class="n">role</span><span class="p">.</span><span class="n">priority</span>&quot;<span class="p">:</span> &quot;1&quot;<span class="p">,</span> 
+            &quot;<span class="n">yarn</span><span class="p">.</span><span class="n">component</span><span class="p">.</span><span class="n">instances</span>&quot;<span class="p">:</span> &quot;2&quot;<span class="p">,</span> 
+            &quot;<span class="n">yarn</span><span class="p">.</span><span class="n">memory</span>&quot;<span class="p">:</span> &quot;512&quot;
+        <span class="p">}</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>With the configuration files above, Slider will ask for the required number of containers from YARN, as specified in resources.json. In each of those YARN containers, Slider will run <code>docker pull</code> to download the Docker image specified in metainfo.json. In the scope of this JIRA ticket, we are not supporting Docker images stored in private Docker hubs that require credentials to run docker pull. After downloading completes, Slider will start the containers by running, in this case, <code>/usr/bin/docker run -d borja/memcached</code></p>
 <ul>
 <li>For redis components, it will run:</li>
 </ul>