Swirl is a web management tool for Docker, focused on swarm cluster.
- Swarm components management
- Image and container management
- Compose management with deployment support
- Service monitoring based on Prometheus and cadvisor
- Service auto scaling
- LDAP authentication support
- Full permission control based on RBAC model
- Scale out as you want
- Multiple language support
- And more...
All options can be set with config/app.yml.
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}'
Only these options can be set by environment variables for now.
| Name | Value |
|---|---|
| DB_TYPE | mongo,bolt |
| DB_ADDRESS | localhost:27017/swirl |
| DOCKER_ENDPOINT | tcp://docker-proxy:2375 |
| AUTH_TIMEOUT | 4h |
Docker support mounting configuration file through swarm from v17.06, so you can store your config in swarm and mount it to your program.
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.
Just copy the swirl binary and config/assets/views directories to the host, and run it.
./swirl
- Use bolt storage engine
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
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
- Use bolt storage engine
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
docker service create \ --name=swirl \ --publish=8001:8001/tcp \ --env DB_ADDRESS=localhost:27017/swirl \ --constraint=node.role==manager \ --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ cuigh/swirl
docker stack deploy -c compose.yml swirl
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 |
To build Swirl from source, you need go1.11 installed.
$ go build
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.