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>
+ "<span class="n">schema</span>"<span class="p">:</span>
"<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"<span class="p">,</span>
+ "<span class="n">metadata</span>"<span class="p">:</span> <span
class="p">{</span> <span class="p">},</span>
+ "<span class="k">global</span>"<span class="p">:</span> <span
class="p">{</span> <span class="p">},</span>
+ "<span class="n">components</span>"<span class="p">:</span>
<span class="p">{</span>
+ "<span class="n">REDIS</span>"<span class="p">:</span> <span
class="p">{</span>
+ "<span class="n">memcached</span><span
class="p">.</span><span class="n">commandPath</span>"<span
class="p">:</span> "<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>"<span class="p">,</span>
+ "<span class="n">memcached</span><span
class="p">.</span><span class="n">options</span>"<span class="p">:</span>
"<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>"<span class="o">**</span><span
class="n">None</span><span class="o">**\</span>""<span
class="p">,</span>
+ "<span class="n">memcached</span><span
class="p">.</span><span class="n">statusCommand</span>"<span
class="p">:</span> "<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>"<span class="p">,</span>
+ "<span class="n">memcached</span><span
class="p">.</span><span class="n">inputFiles</span>"<span
class="p">:</span> <span class="p">[</span>
+ <span class="p">{</span>
+ "<span class="n">containerPath</span>"<span
class="p">:</span> "<span class="o">/</span><span
class="n">tmp</span><span class="o">/</span><span
class="n">input</span>"<span class="p">,</span>
+ "<span class="n">fileLocalPath</span>"<span
class="p">:</span> "<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>"
+ <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">-></span> <span
class="n">components</span><span class="p">(</span><span
class="n">list</span><span class="p">)</span> <span class="o">-></span>
<span class="n">component</span><span class="p">(</span><span
class="n">map</span><span class="p">)</span> <span class="o">-></span> <span
class="n">containers</span><span class="p">(</span><span
class="n">list</span><span class="p">)</span><span class="o">-></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>{
+ "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 <span
class="cp">${</span><span class="n">container_id</span><span
class="cp">}</span>"
+ }
+ ]
+ },
+ {
+ "name": "REDIS",
+ "type": "docker",
+ "dockerContainers": [
+ {
+ "name": "redis",
+ "image": "dockerhub/redis",
+ "additionalParam": "--appendonly
yes",
+ "commandPath": "/usr/bin/docker",
+ "ports": [
+ {
+ "containerPort": "11211",
+ "hostPort": "<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>"
+ }
+ ],
+ "mounts": [
+ {
+ "containerMount":
"/tmp/confg",
+ "hostMount": "<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"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
+</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>
+ "<span class="n">schema</span>"<span class="p">:</span>
"<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"<span class="p">,</span>
+ "<span class="n">metadata</span>"<span class="p">:</span> <span
class="p">{</span> <span class="p">},</span>
+ "<span class="k">global</span>"<span class="p">:</span> <span
class="p">{</span> <span class="p">},</span>
+ "<span class="n">components</span>"<span class="p">:</span>
<span class="p">{</span>
+ "<span class="n">slider</span><span class="o">-</span><span
class="n">appmaster</span>"<span class="p">:</span> <span
class="p">{</span> <span class="p">},</span>
+ "<span class="n">REDIS</span>"<span class="p">:</span> <span
class="p">{</span>
+ "<span class="n">yarn</span><span class="p">.</span><span
class="n">role</span><span class="p">.</span><span
class="n">priority</span>"<span class="p">:</span> "1"<span
class="p">,</span>
+ "<span class="n">yarn</span><span class="p">.</span><span
class="n">component</span><span class="p">.</span><span
class="n">instances</span>"<span class="p">:</span> "2"<span
class="p">,</span>
+ "<span class="n">yarn</span><span class="p">.</span><span
class="n">memory</span>"<span class="p">:</span> "512"
+ <span class="p">},</span>
+ "<span class="n">MEMCACHED</span>"<span class="p">:</span>
<span class="p">{</span>
+ "<span class="n">yarn</span><span class="p">.</span><span
class="n">role</span><span class="p">.</span><span
class="n">priority</span>"<span class="p">:</span> "1"<span
class="p">,</span>
+ "<span class="n">yarn</span><span class="p">.</span><span
class="n">component</span><span class="p">.</span><span
class="n">instances</span>"<span class="p">:</span> "2"<span
class="p">,</span>
+ "<span class="n">yarn</span><span class="p">.</span><span
class="n">memory</span>"<span class="p">:</span> "512"
+ <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>