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 \
--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 \
--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
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 |
Swirl use dep
as dependency management tool. You can build Swirl
$ dep ensure
$ 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.