Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cuigh/swirl
A web UI for Docker, focused on swarm cluster.
https://github.com/cuigh/swirl
docker docker-compose docker-container docker-image docker-swarm docker-ui docker-web-management moby swirl
Last synced: about 7 hours ago
JSON representation
A web UI for Docker, focused on swarm cluster.
- Host: GitHub
- URL: https://github.com/cuigh/swirl
- Owner: cuigh
- License: mit
- Created: 2017-09-25T08:43:53.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-05-16T02:47:48.000Z (over 1 year ago)
- Last Synced: 2024-12-14T09:09:47.530Z (7 days ago)
- Topics: docker, docker-compose, docker-container, docker-image, docker-swarm, docker-ui, docker-web-management, moby, swirl
- Language: Go
- Homepage:
- Size: 9.07 MB
- Stars: 622
- Watchers: 24
- Forks: 80
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Security: security/auth.go
Awesome Lists containing this project
- awesome-swarm - Swirl - Web UI for Docker, focused on swarm cluster. (Community Tools / Cluster Management)
- awesome-docker - Swirl - Swirl is a web management tool for Docker, focused on swarm cluster By [@cuigh](https://github.com/cuigh/) (Container Operations / User Interface)
- awesome-docker - Swirl - Swirl is a web management tool for Docker, focused on swarm cluster By [@cuigh](https://github.com/cuigh/) (Container Operations / User Interface)
README
# SWIRL
[![Docker Pulls](https://img.shields.io/docker/pulls/cuigh/swirl.svg)](https://hub.docker.com/r/cuigh/swirl/)
[![Swirl](https://goreportcard.com/badge/cuigh/swirl)](https://goreportcard.com/report/cuigh/swirl)**Swirl** is a web management tool for Docker, focused on swarm cluster.
> Warning: v1.0+ is not fully compatible with previous versions, it is recommended to redeploy instead of upgrading directly.
## Features
* Swarm components management
* Image and container management
* Compose management with deployment support
* Service monitoring based on [Prometheus](https://hub.docker.com/r/cuigh/prometheus/) and [cadvisor](https://github.com/google/cadvisor)
* Service auto scaling
* LDAP authentication support
* Full permission control based on RBAC model
* Scale out as you want
* Multiple language support
* And more...## Snapshots
### Home
![Home](docs/images/home.png)
### Service list
![Service list](docs/images/services.png)
### Service stats
![Service stats](docs/images/service-stats.png)
### Stack list
![Stack list](docs/images/stacks.png)
### Settings
![Setting](docs/images/settings.png)
## Configuration
### With config file
All options can be set with `config/app.yml`.
```yaml
name: swirl
banner: falseweb:
entries:
- address: :8002
authorize: '?'swirl:
db_type: mongo
db_address: mongodb://localhost:27017/swirl
# token_expiry: 30m
# docker_api_version: '1.41'
# docker_endpoint: tcp://docker-proxy:2375log:
loggers:
- level: info
writers: console
writers:
- name: console
type: console
layout: '[{L}]{T}: {M}{N}'
```### With environment variables
Only these options can be set by environment variables for now.
| Name | Value |
|--------------------|----------------------------------|
| DB_TYPE | mongo(default),bolt |
| DB_ADDRESS | mongodb://localhost:27017/swirl |
| TOKEN_EXPIRY | 30m |
| DOCKER_ENDPOINT | tcp://docker-proxy:2375 |
| DOCKER_API_VERSION | 1.41 |### With swarm config
Docker support mounting configuration file through swarm from v17.06, so you can store your config in swarm and mount it to your program.
## Deployment
Swirl support two storage engines now: mongo and bolt. **bolt** is suitable for development environment, **Swirl** can only deploy one replica if you use **bolt** storage engine.
### Standalone
Just copy the swirl binary and config directory to the host, and run it.
```bash
./swirl
```### Docker
* 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 \
-e DB_ADDRESS=/data/swirl \
--name=swirl \
cuigh/swirl
```* Use **MongoDB** storage engine
```bash
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=mongodb://localhost:27017/swirl \
--name=swirl \
cuigh/swirl
```### Docker swarm
* Use **bolt** storage engine
```bash
docker service create \
--name=swirl \
--publish=8001:8001/tcp \
--env DB_TYPE=bolt \
--env DB_ADDRESS=/data/swirl \
--constraint=node.hostname==manager1 \
--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
```bash
docker service create \
--name=swirl \
--publish=8001:8001/tcp \
--env DB_ADDRESS=mongodb://localhost:27017/swirl \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
cuigh/swirl
```### Docker compose
```bash
docker stack deploy -c compose.yml swirl
```## 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 | `min=1,max=5,cpu=30:50` |## Build
To build **Swirl** from source, you need `yarn` and `go(v1.16+)` installed.
```sh
$ cd ui
$ yarn
$ yarn build
$ cd ..
$ go build
```## 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.