{"id":13416401,"url":"https://github.com/cuigh/swirl","last_synced_at":"2025-04-05T00:07:35.716Z","repository":{"id":38892849,"uuid":"104724945","full_name":"cuigh/swirl","owner":"cuigh","description":"A web UI for Docker, focused on swarm cluster.","archived":false,"fork":false,"pushed_at":"2023-05-16T02:47:48.000Z","size":9510,"stargazers_count":635,"open_issues_count":21,"forks_count":80,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-03-28T23:05:17.108Z","etag":null,"topics":["docker","docker-compose","docker-container","docker-image","docker-swarm","docker-ui","docker-web-management","moby","swirl"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cuigh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security/auth.go","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-09-25T08:43:53.000Z","updated_at":"2025-03-28T10:46:49.000Z","dependencies_parsed_at":"2024-01-19T16:34:07.425Z","dependency_job_id":null,"html_url":"https://github.com/cuigh/swirl","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuigh%2Fswirl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuigh%2Fswirl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuigh%2Fswirl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuigh%2Fswirl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuigh","download_url":"https://codeload.github.com/cuigh/swirl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266563,"owners_count":20910836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","docker-container","docker-image","docker-swarm","docker-ui","docker-web-management","moby","swirl"],"created_at":"2024-07-30T21:00:58.279Z","updated_at":"2025-04-05T00:07:35.685Z","avatar_url":"https://github.com/cuigh.png","language":"Go","funding_links":[],"categories":["Container Operations","Go","开源","HarmonyOS","Community Tools"],"sub_categories":["User Interface","Windows Manager","Cluster Management"],"readme":"# SWIRL\n\n[![Docker Pulls](https://img.shields.io/docker/pulls/cuigh/swirl.svg)](https://hub.docker.com/r/cuigh/swirl/)\n[![Swirl](https://goreportcard.com/badge/cuigh/swirl)](https://goreportcard.com/report/cuigh/swirl)\n\n**Swirl** is a web management tool for Docker, focused on swarm cluster.\n\n\u003e Warning: v1.0+ is not fully compatible with previous versions, it is recommended to redeploy instead of upgrading directly.\n\n## Features\n\n* Swarm components management\n* Image and container management\n* Compose management with deployment support\n* Service monitoring based on [Prometheus](https://hub.docker.com/r/cuigh/prometheus/) and [cadvisor](https://github.com/google/cadvisor)\n* Service auto scaling\n* LDAP authentication support\n* Full permission control based on RBAC model\n* Scale out as you want\n* Multiple language support\n* And more...\n\n## Snapshots\n\n### Home\n\n![Home](docs/images/home.png)\n\n### Service list\n\n![Service list](docs/images/services.png)\n\n### Service stats\n\n![Service stats](docs/images/service-stats.png)\n\n### Stack list\n\n![Stack list](docs/images/stacks.png)\n\n### Settings\n\n![Setting](docs/images/settings.png)\n\n## Configuration\n\n### With config file\n\nAll options can be set with `config/app.yml`.\n\n```yaml\nname: swirl\nbanner: false\n\nweb:\n  entries:\n    - address: :8002\n  authorize: '?'\n\nswirl:\n  db_type: mongo\n  db_address: mongodb://localhost:27017/swirl\n#  token_expiry: 30m\n#  docker_api_version: '1.41'\n#  docker_endpoint: tcp://docker-proxy:2375\n\nlog:\n  loggers:\n  - level: info\n    writers: console\n  writers:\n  - name: console\n    type: console\n    layout: '[{L}]{T}: {M}{N}'\n```\n\n### With environment variables\n\nOnly these options can be set by environment variables for now.\n\n| Name               | Value                            |\n|--------------------|----------------------------------|\n| DB_TYPE            | mongo(default),bolt              |\n| DB_ADDRESS         | mongodb://localhost:27017/swirl  |\n| TOKEN_EXPIRY       | 30m                              |\n| DOCKER_ENDPOINT    | tcp://docker-proxy:2375          |\n| DOCKER_API_VERSION | 1.41                             |\n\n### With swarm config\n\nDocker support mounting configuration file through swarm from v17.06, so you can store your config in swarm and mount it to your program.\n\n## Deployment\n\nSwirl 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.\n\n### Standalone\n\nJust copy the swirl binary and config directory to the host, and run it.\n\n```bash\n./swirl\n```\n\n### Docker\n\n* Use **bolt** storage engine\n\n```bash\ndocker run -d -p 8001:8001 \\\n    -v /var/run/docker.sock:/var/run/docker.sock \\\n    -v /data/swirl:/data/swirl \\\n    -e DB_TYPE=bolt \\\n    -e DB_ADDRESS=/data/swirl \\\n    --name=swirl \\\n    cuigh/swirl\n```\n\n* Use **MongoDB** storage engine\n\n```bash\ndocker run -d -p 8001:8001 \\\n    --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \\\n    -e DB_TYPE=mongo \\\n    -e DB_ADDRESS=mongodb://localhost:27017/swirl \\\n    --name=swirl \\\n    cuigh/swirl\n```\n\n### Docker swarm\n\n* Use **bolt** storage engine\n\n```bash\ndocker service create \\\n  --name=swirl \\\n  --publish=8001:8001/tcp \\\n  --env DB_TYPE=bolt \\\n  --env DB_ADDRESS=/data/swirl \\\n  --constraint=node.hostname==manager1 \\\n  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \\\n  --mount=type=bind,src=/data/swirl,dst=/data/swirl \\\n  cuigh/swirl\n```\n\n* Use **MongoDB** storage engine\n\n```bash\ndocker service create \\\n  --name=swirl \\\n  --publish=8001:8001/tcp \\\n  --env DB_ADDRESS=mongodb://localhost:27017/swirl \\\n  --constraint=node.role==manager \\\n  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \\\n  cuigh/swirl\n```\n\n### Docker compose\n\n```bash\ndocker stack deploy -c compose.yml swirl\n```\n\n## Advanced features\n\n**Swirl** use service labels to support some features, the labels in the table below are currently supported.\n\n| Name        | Description          | Examples                |\n|-------------|----------------------|-------------------------|\n| swirl.scale | Service auto scaling | `min=1,max=5,cpu=30:50` |\n\n## Build\n\nTo build **Swirl** from source, you need `yarn` and `go(v1.16+)` installed.\n\n```sh\n$ cd ui \n$ yarn\n$ yarn build\n$ cd ..\n$ go build\n```\n\n## License\n\nThis 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.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuigh%2Fswirl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcuigh%2Fswirl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuigh%2Fswirl/lists"}