2017-09-26 12:50:09 +00:00
# SWIRL
2018-03-14 10:23:41 +00:00
[![Docker Pulls ](https://img.shields.io/docker/pulls/cuigh/swirl.svg )](https://hub.docker.com/r/cuigh/swirl/)
2017-10-24 10:04:28 +00:00
[![Swirl ](https://goreportcard.com/badge/cuigh/swirl )](https://goreportcard.com/report/cuigh/swirl)
2018-03-13 10:48:16 +00:00
**Swirl** is a web management tool for Docker, focused on swarm cluster.
2017-09-26 12:50:09 +00:00
## Features
* Swarm components management
* Image and container management
* Compose management with deployment support
2018-05-29 02:59:41 +00:00
* Service monitoring based on [Prometheus ](https://hub.docker.com/r/cuigh/prometheus/ ) and [cadvisor ](https://github.com/google/cadvisor )
2018-03-13 10:48:16 +00:00
* Service auto scaling
2017-09-26 12:50:09 +00:00
* LDAP authentication support
* Full permission control based on RBAC model
* Scale out as you want
2017-10-24 10:04:28 +00:00
* Multiple language support
2017-09-26 12:50:09 +00:00
* And more...
## Snapshots
2018-03-16 08:50:03 +00:00
### Home
2017-09-26 12:50:09 +00:00
2018-03-16 08:50:03 +00:00
![Home ](docs/images/home.png )
2017-09-26 12:50:09 +00:00
### Service list
![Service list ](docs/images/service-list.png )
2018-04-08 03:50:12 +00:00
### Service stats
2017-09-26 12:50:09 +00:00
2018-04-08 03:50:12 +00:00
![Service stats ](docs/images/service-stats.png )
2017-09-26 12:50:09 +00:00
2018-04-08 03:50:12 +00:00
### Stack list
2017-09-26 12:50:09 +00:00
2018-04-08 03:50:12 +00:00
![Stack list ](docs/images/stack-list.png )
2017-09-26 12:50:09 +00:00
### Settings
![Setting ](docs/images/setting.png )
## Configuration
### With config file
2017-11-14 09:30:08 +00:00
All options can be set with `config/app.yml` .
```yaml
name: swirl
banner: false
web:
address: ':8001'
authorize: '?'
swirl:
db_type: mongo
db_address: localhost:27017/swirl
# docker_endpoint: tcp://docker-proxy:2375
log:
loggers:
- level: info
writers: console
writers:
- name: console
type: console
layout: '[{L}]{T}: {M}{N}'
2017-09-26 12:50:09 +00:00
```
### With environment variables
2018-04-02 12:46:20 +00:00
Only these options can be set by environment variables for now.
2017-09-26 12:50:09 +00:00
2018-04-02 12:46:20 +00:00
| Name | Value |
| --------------- | -----------------------------|
2018-04-27 13:17:00 +00:00
| DB_TYPE | mongo,bolt |
2018-04-02 12:46:20 +00:00
| DB_ADDRESS | localhost:27017/swirl |
| DOCKER_ENDPOINT | tcp://docker-proxy:2375 |
| AUTH_TIMEOUT | 4h |
2017-09-26 12:50:09 +00:00
### With swarm config
2017-10-24 10:04:28 +00:00
Docker support mounting configuration file through swarm from v17.06, so you can store your config in swarm and mount it to your program.
2017-09-26 12:50:09 +00:00
## Deployment
2018-04-27 13:17:00 +00:00
Swirl support two storage engines now: mongo and bolt. **bolt** is suitable for develepment environment, **Swirl** can only deploy one replica if you use **bolt** storage engine.
2017-09-26 12:50:09 +00:00
### Stand alone
2017-10-24 10:04:28 +00:00
Just copy the swirl binary and config/assets/views directories to the host, and run it.
2017-09-26 12:50:09 +00:00
```bash
2017-10-24 10:04:28 +00:00
./swirl
2017-09-26 12:50:09 +00:00
```
### Docker
2018-04-27 13:17:00 +00:00
* Use **bolt** storage engine
```bash
docker run -d -p 8001:8001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/swirl:/data/swirl \
-e DB_TYPE=bolt \
--name=swirl \
cuigh/swirl
```
* Use **MongoDB** storage engine
2017-09-26 12:50:09 +00:00
```bash
2017-10-24 10:04:28 +00:00
docker run -d -p 8001:8001 \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
-e DB_TYPE=mongo \
-e DB_ADDRESS=localhost:27017/swirl \
--name=swirl \
cuigh/swirl
2017-09-26 12:50:09 +00:00
```
### Docker swarm
2018-04-27 13:17:00 +00:00
* Use **bolt** storage engine
```bash
docker service create \
--name=swirl \
--publish=8001:8001/tcp \
--env DB_TYPE=bolt \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
--mount=type=bind,src=/data/swirl,dst=/data/swirl \
cuigh/swirl
```
* Use **MongoDB** storage engine
2017-09-26 12:50:09 +00:00
```bash
docker service create \
--name=swirl \
--publish=8001:8001/tcp \
2017-10-24 10:04:28 +00:00
--env DB_ADDRESS=localhost:27017/swirl \
2017-09-26 12:50:09 +00:00
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
cuigh/swirl
```
2018-01-04 07:54:28 +00:00
### Docker compose
```bash
docker stack deploy -c compose.yml swirl
```
2018-03-13 10:48:16 +00:00
## Advanced features
**Swirl** use service labels to support some features, the labels in the table below are currently supported.
Name | Description | Examples
--- | --- | ---
swirl.scale | Service auto scaling | `swirl.scale=min=1,max=5,cpu=30:50`
2017-09-26 12:50:09 +00:00
## Build
2017-11-15 06:31:37 +00:00
**Swirl** use `dep` as dependency management tool. You can build **Swirl**
```sh
$ dep ensure
$ go build
```
2017-09-26 12:50:09 +00:00
## License
This product is licensed to you under the MIT License. You may not use this product except in compliance with the License. See LICENSE and NOTICE for more information.