{"id":13580790,"url":"https://github.com/hasnat/docker-volumes-provisioner","last_synced_at":"2026-01-23T17:16:17.029Z","repository":{"id":87123989,"uuid":"192134050","full_name":"hasnat/docker-volumes-provisioner","owner":"hasnat","description":"Helper to provision your docker volumes with appropriate permissions chown and chmod","archived":false,"fork":false,"pushed_at":"2026-01-12T20:33:13.000Z","size":37,"stargazers_count":16,"open_issues_count":11,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-23T07:46:38.175Z","etag":null,"topics":["docker","docker-compose","permissions","provisioning","volumes"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hasnat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-16T00:04:25.000Z","updated_at":"2025-10-16T08:37:06.000Z","dependencies_parsed_at":"2024-01-16T20:29:49.571Z","dependency_job_id":"64d98a58-5727-4fda-bed5-78f0ba36b27a","html_url":"https://github.com/hasnat/docker-volumes-provisioner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hasnat/docker-volumes-provisioner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasnat%2Fdocker-volumes-provisioner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasnat%2Fdocker-volumes-provisioner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasnat%2Fdocker-volumes-provisioner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasnat%2Fdocker-volumes-provisioner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hasnat","download_url":"https://codeload.github.com/hasnat/docker-volumes-provisioner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasnat%2Fdocker-volumes-provisioner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28696523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T15:57:05.722Z","status":"ssl_error","status_checked_at":"2026-01-23T15:56:27.656Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","permissions","provisioning","volumes"],"created_at":"2024-08-01T15:01:55.121Z","updated_at":"2026-01-23T17:16:17.013Z","avatar_url":"https://github.com/hasnat.png","language":"Dockerfile","funding_links":[],"categories":["Dockerfile"],"sub_categories":[],"readme":"\n# Docker Volumes Provisioner\nhub.docker.com [hasnat/volumes-provisioner](https://hub.docker.com/r/hasnat/volumes-provisioner)\n\nAn alpine based helper image to essentially make directory\nwith appropriate owner and permissions to be used by other containers.\nThis is achieved by [sed](https://linux.die.net/man/1/sed) and [install](https://linux.die.net/man/1/install).\n\nMost images require data folders to be under certain permissions,\nfor mounted volumes directories have to be created and modified\nbefore container start.\ne.g.\n\n- [mysql](https://hub.docker.com/_/mysql) data folder needs to be 1000:1000\n- [prometheus](https://hub.docker.com/r/prom/prometheus) needs 65534:65534\n- [grafana](https://hub.docker.com/r/grafana/grafana) needs 472:472\n\n\n### Config\nPass config as env var `PROVISION_DIRECTORIES`\n\nuid:gid:mode:dir(s) e.g. 1000:1000:0755:/var/www\n\nCan contain multiple directories separated by space and/or multiple configs separated by ;\n\ne.g.\n\n- `1000:1000:0755:/var/www/html`\n- `1000:1000:0755:/var/www /var/www/html`\n- `1000:1000:0755:/var/www /var/www/html;1001:1001:0755:/var/app /var/app/cache`\n\n### draw\n```\n        PROVISION_DIRECTORIES                                                                              \n                                                                                                           \n                                                                                                           \n                     sed                                                  -d, --directory                  \n                                                                          treat all arguments as           \n                                                                          directory names; create all      \n                                                                          components of the specified      \n                           ([0-9]+):([0-9]+):([0-9]+):([^:;]+);?          directories                      \n                                │       │       │         │  │                                             \n                                │       │       │         │  │            -o, --owner=OWNER                \n                                │       │       │         │  │            set ownership (super-user only)  \n                                └─────┐ └───┐   └─┐  ┌────┘  └────┐                                        \n                                      │     │     │  │            │       -g, --group=GROUP                \n                                      │     │     │  │            │       set group ownership, instead of  \n                                      │     │     │  │            │       process' current group           \n                                      ▼     ▼     ▼  ▼            ▼                                        \n                       install -d -o \\1 -g \\2 -m \\3 \\4 ; ls -dhn \\4 ;     -m, --mode=MODE                  \n                                                                          set permission mode (as in       \n                                                                          chmod), instead of rwxr-xr-x     \nExamples                                                                                                   \n                                                                                                           \nPROVISION_DIRECTORIES: \"1000:1000:0755:/var/www/html\"                                                      \nPROVISION_DIRECTORIES: \"1000:1000:0755:/var/www /var/www/html\"                                             \nPROVISION_DIRECTORIES: \"1000:1000:0755:/var/www /var/www/html;1000:1000:0755:/var/app /var/app/cache\"      \nPROVISION_DIRECTORIES: \"65534:65534:0755:/var/data/prometheus/data\"\n```\n\n#### Local Run example\n```\ndocker run --rm \\\n-e PROVISION_DIRECTORIES=1000:1000:0755:/var/www \\\n-v `pwd`/data:/var/www \\\nhasnat/volumes-provisioner\nls -dhn data\n```\n\n#### Docker Compose prometheus example\nHere using depends_on we make sure directory with correct\npermissions is created before prometheus starts\n```\nversion: '2'\nservices:\n  volumes-provisioner:\n    image: hasnat/volumes-provisioner\n    environment:\n      PROVISION_DIRECTORIES: \"65534:65534:0755:/var/data/prometheus/data\"\n    volumes:\n      - \"./var/data:/var/data\"\n    network_mode: none\n\n  prometheus:\n    image: prom/prometheus:v2.3.2\n    ports:\n      - \"9090:9090\"\n    depends_on:\n      - volumes-provisioner\n    volumes:\n      - \"./var/data/prometheus/data:/prometheus/data\"\n\n```\n\n#### Build locally\n```\ndocker build -t volumes-provisioner .\ndocker run --rm \\\n-e PROVISION_DIRECTORIES=1000:1000:0755:/var/www \\\n-v `pwd`/data:/var/www \\\nvolumes-provisioner\nls -dhn data\n```\n\n#### Notes\nWon't work for docker for macos volume mounts\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhasnat%2Fdocker-volumes-provisioner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhasnat%2Fdocker-volumes-provisioner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhasnat%2Fdocker-volumes-provisioner/lists"}