docs/apidocs/docker-cloud/includes/stack.html

698 lines
45 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>API Documentation</title>
<link href="../stylesheets/screen.css" rel="stylesheet" type="text/css" media="screen" />
<link href="../stylesheets/print.css" rel="stylesheet" type="text/css" media="print" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="../javascripts/all_nosearch.js" type="text/javascript"></script>
</head>
<body class="includes includes_stack">
<a href="#" id="nav-button">
<span>
NAV
<img src="../images/navbar.png" />
</span>
</a>
<div class="tocify-wrapper">
<img src="../images/logo.png" />
<div id="toc">
</div>
</div>
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id="stacks">Stacks</h1>
<h2 id="stack">Stack</h2>
<blockquote>
<p>Example</p>
</blockquote>
<pre class="highlight json"><code><span class="p">{</span><span class="w">
</span><span class="nt">"deployed_datetime"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Mon, 13 Oct 2014 11:01:43 +0000"</span><span class="p">,</span><span class="w">
</span><span class="nt">"destroyed_datetime"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w">
</span><span class="nt">"nickname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"deployment stack"</span><span class="p">,</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dockercloud-app"</span><span class="p">,</span><span class="w">
</span><span class="nt">"resource_uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/api/app/v1/user_namespace/stack/7fe7ec85-58be-4904-81da-de2219098d7c/"</span><span class="p">,</span><span class="w">
</span><span class="nt">"services"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="s2">"/api/app/v1/user_namespace/service/09cbcf8d-a727-40d9-b420-c8e18b7fa55b/"</span><span class="w">
</span><span class="p">],</span><span class="w">
</span><span class="nt">"state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Running"</span><span class="p">,</span><span class="w">
</span><span class="nt">"synchronized"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
</span><span class="nt">"uuid"</span><span class="p">:</span><span class="w"> </span><span class="s2">"09cbcf8d-a727-40d9-b420-c8e18b7fa55b"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<p>A stack is a logical grouping of closely related services, that may be linked with one another.</p>
<p>This is a <a href="#namespaced-endpoints">namespaced endpoint</a>.</p>
<h3 id="attributes">Attributes</h3>
<table><thead>
<tr>
<th>Attribute</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>A unique identifier for the stack generated automatically on creation</td>
</tr>
<tr>
<td>resource_uri</td>
<td>A unique API endpoint that represents the stack</td>
</tr>
<tr>
<td>name</td>
<td>A user provided name for the stack.</td>
</tr>
<tr>
<td>state</td>
<td>The state of the stack (see table <code class="prettyprint">Stack states</code> below)</td>
</tr>
<tr>
<td>synchronized</td>
<td>Flag indicating if the current stack definition is synchronized with their services.</td>
</tr>
<tr>
<td>services</td>
<td>List of service resource URIs belonging to the stack</td>
</tr>
<tr>
<td>deployed_datetime</td>
<td>The date and time of the last deployment of the stack (if applicable, <code class="prettyprint">null</code> otherwise)</td>
</tr>
<tr>
<td>destroyed_datetime</td>
<td>The date and time of the <code class="prettyprint">terminate</code> operation on the stack (if applicable, <code class="prettyprint">null</code> otherwise)</td>
</tr>
<tr>
<td>nickname</td>
<td>A user-friendly name for the stack (<code class="prettyprint">name</code> by default)</td>
</tr>
</tbody></table>
<h3 id="stack-states">Stack states</h3>
<table><thead>
<tr>
<th>State</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>Not Running</td>
<td>The stack has been created and has no deployed services yet. Possible actions in this state: <code class="prettyprint">start</code>, <code class="prettyprint">terminate</code>.</td>
</tr>
<tr>
<td>Starting</td>
<td>All services for the stack are either starting or already running. No actions allowed in this state.</td>
</tr>
<tr>
<td>Running</td>
<td>All services for the service are deployed and running. Possible actions in this state: <code class="prettyprint">redeploy</code>, <code class="prettyprint">terminate</code>.</td>
</tr>
<tr>
<td>Partly running</td>
<td>One or more services of the stack are deployed and running. Possible actions in this state: <code class="prettyprint">redeploy</code>, <code class="prettyprint">terminate</code>.</td>
</tr>
<tr>
<td>Stopping</td>
<td>All services for the stack are either stopping or already stopped. No actions allowed in this state.</td>
</tr>
<tr>
<td>Stopped</td>
<td>All services for the service are stopped. Possible actions in this state: <code class="prettyprint">start</code>, <code class="prettyprint">redeploy</code>, <code class="prettyprint">terminate</code>.</td>
</tr>
<tr>
<td>Redeploying</td>
<td>The stack is redeploying all its services with the updated configuration. No actions allowed in this state.</td>
</tr>
<tr>
<td>Terminating</td>
<td>All services for the stack are either being terminated or already terminated. No actions allowed in this state.</td>
</tr>
<tr>
<td>Terminated</td>
<td>The stack and all its services have been terminated. No actions allowed in this state.</td>
</tr>
</tbody></table>
<h2 id="list-all-stacks">List all stacks</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stacks</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="nb">list</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stackList</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">ListStacks</span><span class="p">()</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">stackList</span><span class="p">)</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">GET</span> <span class="nn">/api/app/v1/stack/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
</code></pre>
<pre class="highlight shell"><code>docker-cloud stack ls
</code></pre>
<p>Lists all current and recently terminated stacks. Returns a list of <code class="prettyprint">Stack</code> objects.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">GET /api/app/v1/[optional_namespace/]stack/</code></p>
<h3 id="query-parameters">Query Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>Filter by UUID</td>
</tr>
<tr>
<td>name</td>
<td>Filter by stack name</td>
</tr>
</tbody></table>
<h2 id="create-a-new-stack">Create a new stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">"my-new-stack"</span><span class="p">,</span> <span class="n">services</span><span class="o">=</span><span class="p">[{</span><span class="s">"name"</span><span class="p">:</span> <span class="s">"hello-word"</span><span class="p">,</span> <span class="s">"image"</span><span class="p">:</span> <span class="s">"tutum/hello-world"</span><span class="p">,</span> <span class="s">"target_num_containers"</span><span class="p">:</span> <span class="mi">2</span><span class="p">}])</span>
<span class="n">stack</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">CreateStack</span><span class="p">(</span><span class="n">dockercloud</span><span class="o">.</span><span class="n">StackCreateRequest</span><span class="p">{</span><span class="n">Name</span><span class="o">:</span><span class="x"> </span><span class="s">"my-new-stack"</span><span class="p">,</span><span class="x"> </span><span class="n">Services</span><span class="o">:</span><span class="x"> </span><span class="p">[]</span><span class="n">dockercloud</span><span class="o">.</span><span class="n">ServiceCreateRequest</span><span class="p">{{</span><span class="n">Image</span><span class="o">:</span><span class="x"> </span><span class="s">"tutum/hello-world"</span><span class="p">,</span><span class="x"> </span><span class="n">Name</span><span class="o">:</span><span class="x"> </span><span class="s">"test"</span><span class="p">,</span><span class="x"> </span><span class="n">Target_num_containers</span><span class="o">:</span><span class="x"> </span><span class="m">2</span><span class="p">}}})</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">stack</span><span class="p">)</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">POST</span> <span class="nn">/api/app/v1/stack/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
<span class="na">Content-Type</span><span class="p">:</span> <span class="s">application/json</span>
<span class="p">{</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my-new-stack"</span><span class="p">,</span><span class="w">
</span><span class="nt">"services"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hello-word"</span><span class="p">,</span><span class="w">
</span><span class="nt">"image"</span><span class="p">:</span><span class="w"> </span><span class="s2">"tutum/hello-world"</span><span class="p">,</span><span class="w">
</span><span class="nt">"target_num_containers"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
</span><span class="nt">"linked_to_service"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"to_service"</span><span class="p">:</span><span class="w"> </span><span class="s2">"database"</span><span class="p">,</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"DB"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"database"</span><span class="p">,</span><span class="w">
</span><span class="nt">"image"</span><span class="p">:</span><span class="w"> </span><span class="s2">"tutum/mysql"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<pre class="highlight shell"><code>docker-cloud stack create --name hello-world -f docker-compose.yml
</code></pre>
<p>Creates a new stack without starting it. Note that the JSON syntax is abstracted by both, the Docker Cloud CLI and our UI, in order to use <a href="../../docker-cloud/apps/stack-yaml-reference/">Stack YAML files</a>.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">POST /api/app/v1/[optional_namespace/]stack/</code></p>
<h3 id="json-parameters">JSON Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>name</td>
<td>(required) A human-readable name for the stack, i.e. <code class="prettyprint">my-hello-world-stack</code></td>
</tr>
<tr>
<td>nickname</td>
<td>(optional) A user-friendly name for the stack (<code class="prettyprint">name</code> by default)</td>
</tr>
<tr>
<td>services</td>
<td>(optional) List of services belonging to the stack. Each service accepts the same parameters as a <a href="#create-a-new-service">Create new service</a> operation (default: <code class="prettyprint">[]</code>) plus the ability to refer &ldquo;links&rdquo; and &ldquo;volumes-from&rdquo; by the name of another service in the stack (see example).</td>
</tr>
</tbody></table>
<h2 id="export-an-existing-stack">Export an existing stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span>
<span class="n">stack</span><span class="o">.</span><span class="n">export</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">GetStack</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">=</span><span class="x"> </span><span class="n">stack</span><span class="o">.</span><span class="n">Export</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">GET</span> <span class="nn">/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/export/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
</code></pre>
<pre class="highlight shell"><code>docker-cloud stack <span class="nb">export </span>46aca402
</code></pre>
<p>Get a JSON representation of the stack following the <a href="../../docker-cloud/apps/stacks/">Stack YAML representation</a>.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">GET /api/app/v1/[optional_namespace/]stack/(uuid)/export/</code></p>
<h3 id="path-parameters">Path Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>The UUID of the stack to retrieve</td>
</tr>
</tbody></table>
<h2 id="get-an-existing-stack">Get an existing stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">GetStack</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">stack</span><span class="p">)</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">GET</span> <span class="nn">/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
</code></pre>
<pre class="highlight shell"><code>docker-cloud stack inspect 46aca402-2109-4a70-a378-760cfed43816
</code></pre>
<p>Get all the details of an specific stack</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">GET /api/app/v1/[optional_namespace/]stack/(uuid)/</code></p>
<h3 id="path-parameters">Path Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>The UUID of the stack to retrieve</td>
</tr>
</tbody></table>
<h2 id="update-an-existing-stack">Update an existing stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span>
<span class="n">stack</span><span class="o">.</span><span class="n">services</span> <span class="o">=</span> <span class="p">{</span><span class="s">"services"</span><span class="p">:</span> <span class="p">[{</span><span class="s">"name"</span><span class="p">:</span> <span class="s">"hello-word"</span><span class="p">,</span> <span class="s">"image"</span><span class="p">:</span> <span class="s">"tutum/hello-world"</span><span class="p">,</span> <span class="s">"target_num_containers"</span><span class="p">:</span> <span class="mi">2</span><span class="p">}]}</span>
<span class="n">stack</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">GetStack</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">=</span><span class="x"> </span><span class="n">stack</span><span class="o">.</span><span class="n">Update</span><span class="p">(</span><span class="n">dockercloud</span><span class="o">.</span><span class="n">StackCreateRequest</span><span class="p">{</span><span class="n">Services</span><span class="o">:</span><span class="x"> </span><span class="p">[]</span><span class="n">dockercloud</span><span class="o">.</span><span class="n">ServiceCreateRequest</span><span class="p">{{</span><span class="n">Name</span><span class="o">:</span><span class="x"> </span><span class="s">"hello-world"</span><span class="p">,</span><span class="x"> </span><span class="n">Image</span><span class="o">:</span><span class="x"> </span><span class="s">"tutum/hello-world"</span><span class="p">,</span><span class="x"> </span><span class="n">Target_num_containers</span><span class="o">:</span><span class="x"> </span><span class="m">2</span><span class="p">}}});</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">PATCH</span> <span class="nn">/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
<span class="na">Content-Type</span><span class="p">:</span> <span class="s">application/json</span>
<span class="p">{</span><span class="w">
</span><span class="nt">"services"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hello-word"</span><span class="p">,</span><span class="w">
</span><span class="nt">"image"</span><span class="p">:</span><span class="w"> </span><span class="s2">"tutum/hello-world"</span><span class="p">,</span><span class="w">
</span><span class="nt">"target_num_containers"</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w">
</span><span class="nt">"linked_to_service"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"to_service"</span><span class="p">:</span><span class="w"> </span><span class="s2">"database"</span><span class="p">,</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"DB"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"database"</span><span class="p">,</span><span class="w">
</span><span class="nt">"image"</span><span class="p">:</span><span class="w"> </span><span class="s2">"tutum/mysql"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<pre class="highlight shell"><code>docker-cloud stack update -f docker-compose.yml 46aca402
</code></pre>
<p>Updates the details of every service in the stack.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">PATCH /api/app/v1/[optional_namespace/]stack/(uuid)/</code></p>
<h3 id="path-parameters">Path Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>The UUID of the stack to update</td>
</tr>
</tbody></table>
<h3 id="json-parameters">JSON Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>services</td>
<td>(optional) List of services belonging to the stack. Each service accepts the same parameters as a <a href="#update-an-existing-service">Update an existing service</a> operation (default: <code class="prettyprint">[]</code>) plus the ability to refer &ldquo;links&rdquo; and &ldquo;volumes-from&rdquo; by the name of another service in the stack (see example).</td>
</tr>
</tbody></table>
<h2 id="stop-a-stack">Stop a stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span>
<span class="n">stack</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">GetStack</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">=</span><span class="x"> </span><span class="n">stack</span><span class="o">.</span><span class="n">Stop</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">POST</span> <span class="nn">/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/stop/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
</code></pre>
<pre class="highlight shell"><code>docker-cloud stack stop 46aca402-2109-4a70-a378-760cfed43816
</code></pre>
<p>Stops the services in the stack.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">POST /api/app/v1/[optional_namespace/]stack/(uuid)/stop/</code></p>
<h3 id="path-parameters">Path Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>The UUID of the stack to stop</td>
</tr>
</tbody></table>
<h2 id="start-a-stack">Start a stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">fetch</span><span class="p">()</span>
<span class="n">stack</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">GetStack</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">=</span><span class="x"> </span><span class="n">stack</span><span class="o">.</span><span class="n">Start</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">POST</span> <span class="nn">/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/start/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
</code></pre>
<pre class="highlight shell"><code>docker-cloud stack start 46aca402
</code></pre>
<p>Starts the services in the stack.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">POST /api/app/v1/[optional_namespace/]stack/(uuid)/start/</code></p>
<h3 id="path-parameters">Path Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>The UUID of the stack to start</td>
</tr>
</tbody></table>
<h2 id="redeploy-a-stack">Redeploy a stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span>
<span class="n">stack</span><span class="o">.</span><span class="n">redeploy</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">GetStack</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="c">//Redeploy(dockercloud.ReuseVolumesOption{Reuse: true}) to reuse the existing volumes</span><span class="x">
</span><span class="c">//Redeploy(dockercloud.ReuseVolumesOption{Reuse: false}) to not reuse the existing volumes</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">=</span><span class="x"> </span><span class="n">stack</span><span class="o">.</span><span class="n">Redeploy</span><span class="p">(</span><span class="n">dockercloud</span><span class="o">.</span><span class="n">ReuseVolumesOption</span><span class="p">{</span><span class="n">Reuse</span><span class="o">:</span><span class="x"> </span><span class="no">false</span><span class="p">});</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">POST</span> <span class="nn">/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/redeploy/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
</code></pre>
<pre class="highlight shell"><code>docker-cloud stack redeploy 46aca402
</code></pre>
<p>Redeploys all the services in the stack.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">POST /api/app/v1/[optional_namespace/]stack/(uuid)/redeploy/</code></p>
<h3 id="path-parameters">Path Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>The UUID of the stack to redeploy</td>
</tr>
</tbody></table>
<h3 id="query-parameters">Query Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>reuse_volumes</td>
<td>Wheather to reuse container volumes for this redeploy operation or not (default: <code class="prettyprint">true</code>).</td>
</tr>
</tbody></table>
<h2 id="terminate-a-stack">Terminate a stack</h2>
<pre class="highlight python"><code><span class="kn">import</span> <span class="nn">dockercloud</span>
<span class="n">stack</span> <span class="o">=</span> <span class="n">dockercloud</span><span class="o">.</span><span class="n">Stack</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span>
<span class="n">stack</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
</code></pre>
<pre class="highlight go"><code><span class="k">import</span><span class="x"> </span><span class="s">"github.com/docker/go-dockercloud/dockercloud"</span><span class="x">
</span><span class="n">stack</span><span class="p">,</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">:=</span><span class="x"> </span><span class="n">dockercloud</span><span class="o">.</span><span class="n">GetStack</span><span class="p">(</span><span class="s">"46aca402-2109-4a70-a378-760cfed43816"</span><span class="p">)</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span><span class="k">if</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">=</span><span class="x"> </span><span class="n">stack</span><span class="o">.</span><span class="n">Terminate</span><span class="p">();</span><span class="x"> </span><span class="n">err</span><span class="x"> </span><span class="o">!=</span><span class="x"> </span><span class="no">nil</span><span class="x"> </span><span class="p">{</span><span class="x">
</span><span class="n">log</span><span class="o">.</span><span class="n">Println</span><span class="p">(</span><span class="n">err</span><span class="p">)</span><span class="x">
</span><span class="p">}</span><span class="x">
</span></code></pre>
<pre class="highlight http"><code><span class="nf">DELETE</span> <span class="nn">/api/app/v1/stack/46aca402-2109-4a70-a378-760cfed43816/</span> <span class="k">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="p">:</span> <span class="s">cloud.docker.com</span>
<span class="na">Authorization</span><span class="p">:</span> <span class="s">Basic dXNlcm5hbWU6YXBpa2V5</span>
<span class="na">Accept</span><span class="p">:</span> <span class="s">application/json</span>
</code></pre>
<pre class="highlight shell"><code>docker-cloud stack terminate 46aca402
</code></pre>
<p>Terminate all the services in a the stack and the stack itself.</p>
<h3 id="endpoint-type">Endpoint Type</h3>
<p>Available in Docker Cloud&rsquo;s <strong>REST API</strong></p>
<h3 id="http-request">HTTP Request</h3>
<p><code class="prettyprint">DELETE /api/app/v1/[optional_namespace/]stack/(uuid)/</code></p>
<h3 id="path-parameters">Path Parameters</h3>
<table><thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead><tbody>
<tr>
<td>uuid</td>
<td>The UUID of the stack to terminate</td>
</tr>
</tbody></table>
</div>
<div class="dark-box">
</div>
</div>
<div class="google-analytics">
<!-- Google Tag Manager -->
<noscript>
<iframe src="//www.googletagmanager.com/ns.html?id=GTM-WLGFZV"
height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WLGFZV');
</script>
<!-- End Google Tag Manager -->
</div>
</body>
</html>