mirror of https://github.com/portainer/portainer
132 lines
5.3 KiB
HTML
132 lines
5.3 KiB
HTML
<rd-header>
|
|
<rd-header-title title="Stack details">
|
|
<a data-toggle="tooltip" title="Refresh" ui-sref="docker.stacks.stack({id: stack.Id})" ui-sref-opts="{reload: true}">
|
|
<i class="fa fa-sync" aria-hidden="true"></i>
|
|
</a>
|
|
</rd-header-title>
|
|
<rd-header-content>
|
|
<a ui-sref="docker.stacks">Stacks</a> > <a ui-sref="docker.stacks.stack({id: stack.Id})">{{ stack.Name }}</a>
|
|
</rd-header-content>
|
|
</rd-header>
|
|
|
|
<!-- access-control-panel -->
|
|
<por-access-control-panel
|
|
ng-if="stack && applicationState.application.authentication"
|
|
resource-id="stack.Name"
|
|
resource-control="stack.ResourceControl"
|
|
resource-type="'stack'">
|
|
</por-access-control-panel>
|
|
<!-- !access-control-panel -->
|
|
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<stack-services-datatable
|
|
title="Services" title-icon="fa-list-alt"
|
|
dataset="services" table-key="stack-services"
|
|
order-by="Name"
|
|
nodes="nodes"
|
|
public-url="state.publicURL"
|
|
show-text-filter="true"
|
|
></stack-services-datatable>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<tasks-datatable
|
|
title="Tasks" title-icon="fa-tasks"
|
|
dataset="tasks" table-key="stack-tasks"
|
|
order-by="Updated" reverse-order="true"
|
|
nodes="nodes"
|
|
show-text-filter="true"
|
|
show-slot-column="true"
|
|
show-logs-button="applicationState.endpoint.apiVersion >= 1.30"
|
|
></tasks-datatable>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row" ng-if="stackFileContent">
|
|
<div class="col-sm-12">
|
|
<rd-widget>
|
|
<rd-widget-header icon="fa-pencil-alt" title="Stack editor"></rd-widget-header>
|
|
<rd-widget-body>
|
|
<form class="form-horizontal">
|
|
<div class="form-group">
|
|
<span class="col-sm-12 text-muted small">
|
|
You can get more information about Compose file format in the <a href="https://docs.docker.com/compose/compose-file/" target="_blank">official documentation</a>.
|
|
</span>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-12">
|
|
<code-editor
|
|
identifier="stack-editor"
|
|
placeholder="# Define or paste the content of your docker-compose file here"
|
|
yml="true"
|
|
on-change="editorUpdate"
|
|
value="stackFileContent"
|
|
></code-editor>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 form-section-title">
|
|
Environment
|
|
</div>
|
|
<!-- environment-variables -->
|
|
<div class="form-group">
|
|
<div class="col-sm-12" style="margin-top: 5px;">
|
|
<label class="control-label text-left">Environment variables</label>
|
|
<span class="label label-default interactive" style="margin-left: 10px;" ng-click="addEnvironmentVariable()">
|
|
<i class="fa fa-plus-circle" aria-hidden="true"></i> add environment variable
|
|
</span>
|
|
</div>
|
|
<!-- environment-variable-input-list -->
|
|
<div class="col-sm-12 form-inline" style="margin-top: 10px;">
|
|
<div ng-repeat="variable in stack.Env" style="margin-top: 2px;">
|
|
<div class="input-group col-sm-5 input-group-sm">
|
|
<span class="input-group-addon">name</span>
|
|
<input type="text" class="form-control" ng-model="variable.name" placeholder="e.g. FOO">
|
|
</div>
|
|
<div class="input-group col-sm-5 input-group-sm">
|
|
<span class="input-group-addon">value</span>
|
|
<input type="text" class="form-control" ng-model="variable.value" placeholder="e.g. bar">
|
|
</div>
|
|
<button class="btn btn-sm btn-danger" type="button" ng-click="removeEnvironmentVariable($index)">
|
|
<i class="fa fa-trash" aria-hidden="true"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<!-- !environment-variable-input-list -->
|
|
</div>
|
|
<!-- !environment-variables -->
|
|
<!-- options -->
|
|
<div class="col-sm-12 form-section-title" ng-if="applicationState.endpoint.apiVersion >= 1.27">
|
|
Options
|
|
</div>
|
|
<div class="form-group" ng-if="applicationState.endpoint.apiVersion >= 1.27">
|
|
<div class="col-sm-12">
|
|
<label for="prune" class="control-label text-left">
|
|
Prune services
|
|
<portainer-tooltip position="bottom" message="Prune services that are no longer referenced."></portainer-tooltip>
|
|
</label>
|
|
<label class="switch" style="margin-left: 20px;">
|
|
<input name="prune" type="checkbox" ng-model="formValues.Prune"><i></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<!-- !options -->
|
|
<div class="col-sm-12 form-section-title">
|
|
Actions
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-12">
|
|
<button type="button" class="btn btn-sm btn-primary" ng-disabled="state.actionInProgress" ng-click="deployStack()" button-spinner="state.actionInProgress">
|
|
<span ng-hide="state.actionInProgress">Update the stack</span>
|
|
<span ng-show="state.actionInProgress">Deployment in progress...</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</rd-widget-body>
|
|
</rd-widget>
|
|
</div>
|
|
</div>
|