Merge pull request #191 from cloud-inovasi/refactor153-rename-to-portainer
Refactor153 rename to portainerpull/202/head
commit
bb9cebd759
|
@ -7,4 +7,4 @@ bower_components
|
|||
*.iml
|
||||
dist
|
||||
dist/*
|
||||
ui-for-docker-checksum.txt
|
||||
portainer-checksum.txt
|
||||
|
|
|
@ -6,4 +6,4 @@ VOLUME /data
|
|||
|
||||
EXPOSE 9000
|
||||
|
||||
ENTRYPOINT ["/ui-for-docker"]
|
||||
ENTRYPOINT ["/portainer"]
|
||||
|
|
4
LICENSE
4
LICENSE
|
@ -1,4 +1,4 @@
|
|||
Cloudinovasi-ui: Copyright (c) 2016 Cloudinovasi
|
||||
Portainer: Copyright (c) 2016 CloudInovasi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -16,7 +16,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
SOFTWARE.
|
||||
|
||||
UI For Docker: Copyright (c) 2013-2016 Michael Crosby (crosbymichael.com), Kevan Ahlquist (kevanahlquist.com), Anthony Lapenna (anthonylapenna at cloudinovasi dot id)
|
||||
|
||||
|
|
2
Procfile
2
Procfile
|
@ -1 +1 @@
|
|||
web: dockerui -p ":$PORT" -e "$DOCKER_ENDPOINT"
|
||||
web: portainer -p ":$PORT" -e "$DOCKER_ENDPOINT"
|
||||
|
|
59
README.md
59
README.md
|
@ -1,16 +1,9 @@
|
|||
# Cloudinovasi UI for Docker
|
||||
# Portainer
|
||||
|
||||
A fork of the amazing UI for Docker by Michael Crosby and Kevan Ahlquist (https://github.com/kevana/ui-for-docker) using the rdash-angular theme (https://github.com/rdash/rdash-angular).
|
||||
Portainer is a web interface for the Docker remote API.
|
||||
|
||||
![Dashboard](/dashboard.png)
|
||||
|
||||
UI For Docker is a web interface for the Docker Remote API. The goal is to provide a pure client side implementation so it is effortless to connect and manage docker.
|
||||
|
||||
## Goals
|
||||
|
||||
* Minimal dependencies - I really want to keep this project a pure html/js app.
|
||||
* Consistency - The web UI should be consistent with the commands found on the docker CLI.
|
||||
|
||||
## Supported Docker versions
|
||||
|
||||
The following Docker versions are supported:
|
||||
|
@ -22,28 +15,28 @@ The following Docker versions are supported:
|
|||
|
||||
### Quickstart
|
||||
|
||||
1. Run: `docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/cloudinovasi-ui`
|
||||
1. Run: `docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/portainer`
|
||||
|
||||
2. Open your browser to `http://<dockerd host ip>:9000`
|
||||
|
||||
Bind mounting the Unix socket into the UI For Docker container is much more secure than exposing your docker daemon over TCP.
|
||||
Bind mounting the Unix socket into the Portainer container is much more secure than exposing your docker daemon over TCP.
|
||||
|
||||
The `--privileged` flag is required for hosts using SELinux.
|
||||
|
||||
### Specify socket to connect to Docker daemon
|
||||
|
||||
By default UI For Docker connects to the Docker daemon with`/var/run/docker.sock`. For this to work you need to bind mount the unix socket into the container with `-v /var/run/docker.sock:/var/run/docker.sock`.
|
||||
By default Portainer connects to the Docker daemon with`/var/run/docker.sock`. For this to work you need to bind mount the unix socket into the container with `-v /var/run/docker.sock:/var/run/docker.sock`.
|
||||
|
||||
You can use the `--host`, `-H` flags to change this socket:
|
||||
|
||||
```
|
||||
# Connect to a tcp socket:
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/cloudinovasi-ui -H tcp://127.0.0.1:2375
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/portainer -H tcp://127.0.0.1:2375
|
||||
```
|
||||
|
||||
```
|
||||
# Connect to another unix socket:
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/cloudinovasi-ui -H unix:///path/to/docker.sock
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/portainer -H unix:///path/to/docker.sock
|
||||
```
|
||||
|
||||
### Swarm support
|
||||
|
@ -54,17 +47,17 @@ You can access a specific view for you Swarm cluster by defining the `--swarm` f
|
|||
|
||||
```
|
||||
# Connect to a tcp socket and enable Swarm:
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/cloudinovasi-ui -H tcp://<SWARM_HOST>:<SWARM_PORT> --swarm
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/portainer -H tcp://<SWARM_HOST>:<SWARM_PORT> --swarm
|
||||
```
|
||||
|
||||
*NOTE*: Due to Swarm not exposing information in a machine readable way, the app is bound to a specific version of Swarm at the moment.
|
||||
|
||||
### Change address/port UI For Docker is served on
|
||||
UI For Docker listens on port 9000 by default. If you run UI For Docker inside a container then you can bind the container's internal port to any external address and port:
|
||||
### Change address/port Portainer is served on
|
||||
Portainer listens on port 9000 by default. If you run Portainer inside a container then you can bind the container's internal port to any external address and port:
|
||||
|
||||
```
|
||||
# Expose UI For Docker on 10.20.30.1:80
|
||||
$ docker run -d -p 10.20.30.1:80:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/cloudinovasi-ui
|
||||
# Expose Portainer on 10.20.30.1:80
|
||||
$ docker run -d -p 10.20.30.1:80:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/portainer
|
||||
```
|
||||
|
||||
### Access a Docker engine protected via TLS
|
||||
|
@ -74,13 +67,13 @@ Ensure that you have access to the CA, the cert and the public key used to acces
|
|||
These files will need to be named `ca.pem`, `cert.pem` and `key.pem` respectively. Store them somewhere on your disk and mount a volume containing these files inside the UI container:
|
||||
|
||||
```
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/cloudinovasi-ui -v /path/to/certs:/certs -H https://my-docker-host.domain:2376 --tlsverify
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/portainer -v /path/to/certs:/certs -H https://my-docker-host.domain:2376 --tlsverify
|
||||
```
|
||||
|
||||
You can also use the `--tlscacert`, `--tlscert` and `--tlskey` flags if you want to change the default path to the CA, certificate and key file respectively:
|
||||
|
||||
```
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/cloudinovasi-ui -v /path/to/certs:/certs -H https://my-docker-host.domain:2376 --tlsverify --tlscacert /certs/myCa.pem --tlscert /certs/myCert.pem --tlskey /certs/myKey.pem
|
||||
$ docker run -d -p 9000:9000 cloudinovasi/portainer -v /path/to/certs:/certs -H https://my-docker-host.domain:2376 --tlsverify --tlscacert /certs/myCa.pem --tlscert /certs/myCert.pem --tlskey /certs/myKey.pem
|
||||
```
|
||||
|
||||
*Note*: Replace `/path/to/certs` to the path to the certificate files on your disk.
|
||||
|
@ -92,10 +85,10 @@ You can use the `--logo` flag to specify an URL to your own logo.
|
|||
For example, using the Docker logo:
|
||||
|
||||
```
|
||||
$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/cloudinovasi-ui --logo "https://www.docker.com/sites/all/themes/docker/assets/images/brand-full.svg"
|
||||
$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/portainer --logo "https://www.docker.com/sites/all/themes/docker/assets/images/brand-full.svg"
|
||||
```
|
||||
|
||||
The custom logo will replace the CloudInovasi logo in the UI.
|
||||
The custom logo will replace the Portainer logo in the UI.
|
||||
|
||||
### Hide containers with specific labels
|
||||
|
||||
|
@ -110,38 +103,38 @@ $ docker run -d --label owner=acme nginx
|
|||
You can hide it in the view by starting the ui with:
|
||||
|
||||
```
|
||||
$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/cloudinovasi-ui -l owner=acme
|
||||
$ docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock cloudinovasi/portainer -l owner=acme
|
||||
```
|
||||
|
||||
### Reverse proxy configuration
|
||||
|
||||
Has been tested with Nginx 1.11.
|
||||
|
||||
Use the following configuration to host the UI at `myhost.mydomain.com/dockerui`:
|
||||
Use the following configuration to host the UI at `myhost.mydomain.com/portainer`:
|
||||
|
||||
```nginx
|
||||
upstream cloudinovasi-ui {
|
||||
upstream portainer {
|
||||
server ADDRESS:PORT;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location /dockerui/ {
|
||||
location /portainer/ {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
proxy_pass http://cloudinovasi-ui/;
|
||||
proxy_pass http://portainer/;
|
||||
}
|
||||
location /dockerui/ws/ {
|
||||
location /portainer/ws/ {
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_http_version 1.1;
|
||||
proxy_pass http://cloudinovasi-ui/ws/;
|
||||
proxy_pass http://portainer/ws/;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Replace `ADDRESS:PORT` with the CloudInovasi UI container details.
|
||||
Replace `ADDRESS:PORT` with the Portainer container details.
|
||||
|
||||
### Host your own apps
|
||||
|
||||
|
@ -153,10 +146,10 @@ For more information about hosting your own template definition and the format,
|
|||
|
||||
### Available options
|
||||
|
||||
The following options are available for the `ui-for-docker` binary:
|
||||
The following options are available for the `portainer` binary:
|
||||
|
||||
* `--host`, `-H`: Docker daemon endpoint (default: `"unix:///var/run/docker.sock"`)
|
||||
* `--bind`, `-p`: Address and port to serve UI For Docker (default: `":9000"`)
|
||||
* `--bind`, `-p`: Address and port to serve Portainer (default: `":9000"`)
|
||||
* `--data`, `-d`: Path to the data folder (default: `"."`)
|
||||
* `--assets`, `-a`: Path to the assets (default: `"."`)
|
||||
* `--swarm`, `-s`: Swarm cluster support (default: `false`)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package main // import "github.com/cloudinovasi/ui-for-docker"
|
||||
package main // import "github.com/cloudinovasi/portainer"
|
||||
|
||||
import (
|
||||
"gopkg.in/alecthomas/kingpin.v2"
|
||||
|
@ -9,7 +9,7 @@ func main() {
|
|||
kingpin.Version("1.7.0")
|
||||
var (
|
||||
endpoint = kingpin.Flag("host", "Dockerd endpoint").Default("unix:///var/run/docker.sock").Short('H').String()
|
||||
addr = kingpin.Flag("bind", "Address and port to serve UI For Docker").Default(":9000").Short('p').String()
|
||||
addr = kingpin.Flag("bind", "Address and port to serve Portainer").Default(":9000").Short('p').String()
|
||||
assets = kingpin.Flag("assets", "Path to the assets").Default(".").Short('a').String()
|
||||
data = kingpin.Flag("data", "Path to the data").Default(".").Short('d').String()
|
||||
tlsverify = kingpin.Flag("tlsverify", "TLS support").Default("false").Bool()
|
||||
|
|
10
app/app.js
10
app/app.js
|
@ -1,13 +1,13 @@
|
|||
angular.module('uifordocker', [
|
||||
'uifordocker.templates',
|
||||
angular.module('portainer', [
|
||||
'portainer.templates',
|
||||
'ui.bootstrap',
|
||||
'ui.router',
|
||||
'ui.select',
|
||||
'ngCookies',
|
||||
'ngSanitize',
|
||||
'uifordocker.services',
|
||||
'uifordocker.helpers',
|
||||
'uifordocker.filters',
|
||||
'portainer.services',
|
||||
'portainer.helpers',
|
||||
'portainer.filters',
|
||||
'dashboard',
|
||||
'container',
|
||||
'containerConsole',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdHeaderContent', function rdHeaderContent() {
|
||||
var directive = {
|
||||
requires: '^rdHeader',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdHeaderTitle', function rdHeaderTitle() {
|
||||
var directive = {
|
||||
requires: '^rdHeader',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdHeader', function rdHeader() {
|
||||
var directive = {
|
||||
scope: {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdLoading', function rdLoading() {
|
||||
var directive = {
|
||||
restrict: 'AE',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdWidgetBody', function rdWidgetBody() {
|
||||
var directive = {
|
||||
requires: '^rdWidget',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdWidgetFooter', function rdWidgetFooter() {
|
||||
var directive = {
|
||||
requires: '^rdWidget',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdWidgetHeader', function rdWidgetTitle() {
|
||||
var directive = {
|
||||
requires: '^rdWidget',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdWidgetTaskbar', function rdWidgetTaskbar() {
|
||||
var directive = {
|
||||
requires: '^rdWidget',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
angular
|
||||
.module('uifordocker')
|
||||
.module('portainer')
|
||||
.directive('rdWidget', function rdWidget() {
|
||||
var directive = {
|
||||
scope: {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
angular.module('uifordocker.filters', [])
|
||||
angular.module('portainer.filters', [])
|
||||
.filter('truncate', function () {
|
||||
'use strict';
|
||||
return function (text, length, end) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
angular.module('uifordocker.helpers', [])
|
||||
angular.module('portainer.helpers', [])
|
||||
.factory('ImageHelper', [function ImageHelperFactory() {
|
||||
'use strict';
|
||||
return {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
angular.module('uifordocker.services', ['ngResource', 'ngSanitize'])
|
||||
angular.module('portainer.services', ['ngResource', 'ngSanitize'])
|
||||
.factory('Container', ['$resource', 'Settings', function ContainerFactory($resource, Settings) {
|
||||
'use strict';
|
||||
// Resource for interacting with the docker containers
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 1.9 KiB |
14
bower.json
14
bower.json
|
@ -1,18 +1,18 @@
|
|||
{
|
||||
"name": "uifordocker",
|
||||
"name": "portainer",
|
||||
"version": "1.7.0",
|
||||
"homepage": "https://github.com/kevana/ui-for-docker",
|
||||
"homepage": "https://github.com/cloud-inovasi/portainer",
|
||||
"authors": [
|
||||
"Michael Crosby <crosbymichael@gmail.com>",
|
||||
"Kevan Ahlquist <ahlquistkd@gmail.com>",
|
||||
"Anthony Lapenna <anthony.lapenna@cloudinovasi.id>"
|
||||
],
|
||||
"description": "A web interface for the Docker Remote API.",
|
||||
"keywords": [
|
||||
"uifordocker",
|
||||
"dockerui",
|
||||
"docker",
|
||||
"api"
|
||||
"ui",
|
||||
"api",
|
||||
"portainer",
|
||||
"uifordocker",
|
||||
"dockerui"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
|
|
BIN
dashboard.png
BIN
dashboard.png
Binary file not shown.
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 56 KiB |
|
@ -1,5 +1,5 @@
|
|||
upstream dockerui {
|
||||
server dockerui:9000;
|
||||
upstream portainer {
|
||||
server portainer:9000;
|
||||
}
|
||||
|
||||
server {
|
||||
|
@ -12,6 +12,6 @@ server {
|
|||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
proxy_pass http://dockerui;
|
||||
proxy_pass http://portainer;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
dockerui:
|
||||
image: cloudinovasi/ui-for-docker
|
||||
portainer:
|
||||
image: cloudinovasi/portainer
|
||||
command: -e http://<SWARM_HOST>:<SWARM_PORT>
|
||||
|
||||
nginx:
|
||||
build: .
|
||||
links:
|
||||
- dockerui
|
||||
- portainer
|
||||
ports:
|
||||
- 80:80
|
||||
|
|
28
gruntFile.js
28
gruntFile.js
|
@ -93,7 +93,7 @@ module.exports = function (grunt) {
|
|||
},
|
||||
clean: {
|
||||
all: ['<%= distdir %>/*'],
|
||||
app: ['<%= distdir %>/*', '!<%= distdir %>/ui-for-docker'],
|
||||
app: ['<%= distdir %>/*', '!<%= distdir %>/portainer'],
|
||||
tmpl: ['<%= distdir %>/templates']
|
||||
},
|
||||
copy: {
|
||||
|
@ -253,35 +253,35 @@ module.exports = function (grunt) {
|
|||
},
|
||||
shell: {
|
||||
buildImage: {
|
||||
command: 'docker build --rm -t ui-for-docker .'
|
||||
command: 'docker build --rm -t portainer .'
|
||||
},
|
||||
buildBinary: {
|
||||
command: [
|
||||
'docker run --rm -v $(pwd)/api:/src centurylink/golang-builder',
|
||||
'shasum api/ui-for-docker > ui-for-docker-checksum.txt',
|
||||
'shasum api/portainer > portainer-checksum.txt',
|
||||
'mkdir -p dist',
|
||||
'mv api/ui-for-docker dist/'
|
||||
'mv api/portainer dist/'
|
||||
].join(' && ')
|
||||
},
|
||||
run: {
|
||||
command: [
|
||||
'docker stop ui-for-docker',
|
||||
'docker rm ui-for-docker',
|
||||
'docker run --privileged -d -p 9000:9000 -v /tmp/docker-ui:/data -v /var/run/docker.sock:/var/run/docker.sock --name ui-for-docker ui-for-docker -d /data'
|
||||
'docker stop portainer',
|
||||
'docker rm portainer',
|
||||
'docker run --privileged -d -p 9000:9000 -v /tmp/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer -d /data'
|
||||
].join(';')
|
||||
},
|
||||
runSwarm: {
|
||||
command: [
|
||||
'docker stop ui-for-docker',
|
||||
'docker rm ui-for-docker',
|
||||
'docker run -d -p 9000:9000 -v /tmp/docker-ui:/data --name ui-for-docker ui-for-docker -H tcp://10.0.7.10:4000 --swarm -d /data'
|
||||
'docker stop portainer',
|
||||
'docker rm portainer',
|
||||
'docker run -d -p 9000:9000 -v /tmp/portainer:/data --name portainer portainer -H tcp://10.0.7.10:4000 --swarm -d /data'
|
||||
].join(';')
|
||||
},
|
||||
runSsl: {
|
||||
command: [
|
||||
'docker stop ui-for-docker',
|
||||
'docker rm ui-for-docker',
|
||||
'docker run -d -p 9000:9000 -v /tmp/docker-ui:/data -v /tmp/docker-ssl:/certs --name ui-for-docker ui-for-docker -H tcp://10.0.7.10:2376 -d /data --tlsverify'
|
||||
'docker stop portainer',
|
||||
'docker rm portainer',
|
||||
'docker run -d -p 9000:9000 -v /tmp/portainer:/data -v /tmp/docker-ssl:/certs --name portainer portainer -H tcp://10.0.7.10:2376 -d /data --tlsverify'
|
||||
].join(';')
|
||||
},
|
||||
cleanImages: {
|
||||
|
@ -291,7 +291,7 @@ module.exports = function (grunt) {
|
|||
'if': {
|
||||
binaryNotExist: {
|
||||
options: {
|
||||
executable: 'dist/ui-for-docker'
|
||||
executable: 'dist/portainer'
|
||||
},
|
||||
ifFalse: ['shell:buildBinary']
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<html lang="en" ng-app="<%= pkg.name %>">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CloudInovasi UI for Docker</title>
|
||||
<title>Portainer</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="<%= pkg.author %>">
|
||||
|
@ -32,8 +32,8 @@
|
|||
<ul class="sidebar">
|
||||
<li class="sidebar-main">
|
||||
<a ng-click="toggleSidebar()">
|
||||
<img ng-if="config.logo" ng-src="{{ config.logo }}" class="img-responsive logo" alt="CloudInovasi UI">
|
||||
<img ng-if="!config.logo" src="images/logo.png" class="img-responsive logo" alt="CloudInovasi UI">
|
||||
<img ng-if="config.logo" ng-src="{{ config.logo }}" class="img-responsive logo">
|
||||
<img ng-if="!config.logo" src="images/logo.png" class="img-responsive logo" alt="Portainer">
|
||||
<span class="menu-icon glyphicon glyphicon-transfer"></span>
|
||||
</a>
|
||||
</li>
|
||||
|
@ -68,7 +68,7 @@
|
|||
</ul>
|
||||
<div class="sidebar-footer">
|
||||
<div class="col-xs-12">
|
||||
<a href="https://github.com/cloud-inovasi/cloudinovasi-ui" target="_blank">CloudInovasi UI {{ uiVersion }}</a>
|
||||
<a href="https://github.com/cloud-inovasi/portainer" target="_blank">Portainer {{ uiVersion }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
12
package.json
12
package.json
|
@ -1,19 +1,19 @@
|
|||
{
|
||||
"author": "Michael Crosby & Kevan Ahlquist",
|
||||
"name": "uifordocker",
|
||||
"homepage": "https://github.com/kevana/ui-for-docker",
|
||||
"author": "Cloud Inovasi",
|
||||
"name": "portainer",
|
||||
"homepage": "https://github.com/cloud-inovasi/portainer",
|
||||
"version": "1.7.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:kevana/ui-for-docker.git"
|
||||
"url": "git@github.com:cloud-inovasi/portainer.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/kevana/ui-for-docker/issues"
|
||||
"url": "https://github.com/cloud-inovasi/portainer/issues"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"type": "MIT",
|
||||
"url": "https://raw.githubusercontent.com/kevana/ui-for-docker/master/LICENSE"
|
||||
"url": "https://raw.githubusercontent.com/cloud-inovasi/portainer/develop/LICENSE"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
describe('ContainerController', function () {
|
||||
var $scope, $httpBackend, mockContainer, $routeParams;
|
||||
|
||||
beforeEach(module('dockerui'));
|
||||
beforeEach(module('portainer'));
|
||||
|
||||
|
||||
beforeEach(inject(function ($rootScope, $controller, _$routeParams_) {
|
||||
|
@ -22,8 +22,8 @@ describe('ContainerController', function () {
|
|||
$httpBackend.expectGET('dockerapi/containers/json').respond({
|
||||
'Created': 1421817232,
|
||||
'id': 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f',
|
||||
'Image': 'dockerui:latest',
|
||||
'Name': '/dockerui'
|
||||
'Image': 'portainer:latest',
|
||||
'Name': '/portainer'
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -33,8 +33,8 @@ describe('ContainerController', function () {
|
|||
$scope.container = {
|
||||
'Created': 1421817232,
|
||||
'id': 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f',
|
||||
'Image': 'dockerui:latest',
|
||||
'Name': '/dockerui'
|
||||
'Image': 'portainer:latest',
|
||||
'Name': '/portainer'
|
||||
};
|
||||
$scope.container.newContainerName = "newName";
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
describe("ContainerTopController", function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(angular.mock.module('dockerui'));
|
||||
beforeEach(angular.mock.module('portainer'));
|
||||
|
||||
beforeEach(inject(function (_$rootScope_, _$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = _$rootScope_.$new();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
describe('NetworkController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(module('dockerui'));
|
||||
beforeEach(module('portainer'));
|
||||
beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = {};
|
||||
$httpBackend = _$httpBackend_;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
describe('NetworksController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(module('dockerui'));
|
||||
beforeEach(module('portainer'));
|
||||
beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = {};
|
||||
$httpBackend = _$httpBackend_;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
describe('startContainerController', function () {
|
||||
var scope, $location, createController, mockContainer, $httpBackend;
|
||||
|
||||
beforeEach(angular.mock.module('dockerui'));
|
||||
beforeEach(angular.mock.module('portainer'));
|
||||
|
||||
beforeEach(inject(function ($rootScope, $controller, _$location_) {
|
||||
$location = _$location_;
|
||||
|
@ -20,11 +20,11 @@ describe('startContainerController', function () {
|
|||
}));
|
||||
function expectGetContainers() {
|
||||
$httpBackend.expectGET('dockerapi/containers/json?all=1').respond([{
|
||||
'Command': './dockerui -e /docker.sock',
|
||||
'Command': './portainer -e /docker.sock',
|
||||
'Created': 1421817232,
|
||||
'Id': 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f',
|
||||
'Image': 'dockerui:latest',
|
||||
'Names': ['/dockerui'],
|
||||
'Image': 'portainer:latest',
|
||||
'Names': ['/portainer'],
|
||||
'Ports': [{
|
||||
'IP': '0.0.0.0',
|
||||
'PrivatePort': 9000,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
describe("StatsController", function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(angular.mock.module('dockerui'));
|
||||
beforeEach(angular.mock.module('portainer'));
|
||||
|
||||
beforeEach(inject(function (_$rootScope_, _$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = _$rootScope_.$new();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
describe('VolumesController', function () {
|
||||
var $scope, $httpBackend, $routeParams;
|
||||
|
||||
beforeEach(module('dockerui'));
|
||||
beforeEach(module('portainer'));
|
||||
beforeEach(inject(function (_$httpBackend_, $controller, _$routeParams_) {
|
||||
$scope = {};
|
||||
$httpBackend = _$httpBackend_;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
describe('filters', function () {
|
||||
beforeEach(module('dockerui.filters'));
|
||||
beforeEach(module('portainer.filters'));
|
||||
|
||||
describe('truncate', function () {
|
||||
it('should truncate the string to 10 characters ending in "..." by default', inject(function (truncateFilter) {
|
||||
|
|
|
@ -7,7 +7,7 @@ files = [
|
|||
JASMINE_ADAPTER,
|
||||
'dist/angular.js',
|
||||
'dist/vendor.js',
|
||||
'dist/dockerui.js',
|
||||
'dist/portainer.js',
|
||||
'bower_components/angular-mocks/angular-mocks.js',
|
||||
'test/unit/**/*.spec.js'
|
||||
];
|
||||
|
|
Loading…
Reference in New Issue