mirror of
https://github.com/cuigh/swirl
synced 2024-12-28 14:51:57 +00:00
186 lines
4.4 KiB
Markdown
186 lines
4.4 KiB
Markdown
# 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: false
|
|
|
|
web:
|
|
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:2375
|
|
|
|
log:
|
|
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. |