{"id":22447656,"url":"https://github.com/ryan-willis/confik","last_synced_at":"2026-05-04T22:34:34.351Z","repository":{"id":263942892,"uuid":"857782092","full_name":"ryan-willis/confik","owner":"ryan-willis","description":"Insert configuration files into Docker volumes using labels.","archived":false,"fork":false,"pushed_at":"2024-10-13T05:01:43.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T19:00:38.003Z","etag":null,"topics":["docker","docker-compose","docker-labels"],"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/ryan-willis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-09-15T15:45:56.000Z","updated_at":"2024-10-13T05:12:38.000Z","dependencies_parsed_at":"2024-11-21T05:38:26.549Z","dependency_job_id":"2b8b0636-bf4b-44b7-8556-74066418beab","html_url":"https://github.com/ryan-willis/confik","commit_stats":null,"previous_names":["ryan-willis/confik"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-willis%2Fconfik","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-willis%2Fconfik/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-willis%2Fconfik/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-willis%2Fconfik/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryan-willis","download_url":"https://codeload.github.com/ryan-willis/confik/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245835128,"owners_count":20680149,"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-labels"],"created_at":"2024-12-06T04:18:01.634Z","updated_at":"2026-05-04T22:34:34.315Z","avatar_url":"https://github.com/ryan-willis.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# confik\n\nInsert configuration files into Docker volumes using labels.\n\n## Why?\n\nHonestly, this is one of the silliest tools I've built. I manage my own personal docker servers remotely over ssh using `DOCKER_HOST=ssh://remote_server_hostname_or_ip`, and I don't like storing configuration files or checking out a git repo on the actual host itself. Therefore, I don't like using bind mounts for configuration. I prefer to have all of the configuration for a service stored in a git repo that doesn't get checked out on the host that I can make changes to and simply run `docker compose up -d` to apply them.\n\n## Usage\n\nTo get the most out of `confik`, you should use it with Docker Compose. I personally use it to configure [watchtower](https://github.com/containrrr/watchtower). Here's an example:\n\n```yaml\n\nservices:\n  watchtower:\n    image: containrrr/watchtower\n    command:\n      - --label-enable\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - watchtower-confik:/conf/watchtower\n    environment:\n      DOCKER_CONFIG: /conf/watchtower\n    labels:\n      # not necessary for watchtower, but an option if you want\n      # to restart the container when the configuration changes\n      # defaults to false\n      - confik.restart=true\n\n      # the path to the target file in the confik container's volume mount\n      - confik.file=/conf/watchtower/config.json\n\n      # the contents of the configuration file\n      - confik.contents={\"auths\":{\"ghcr.io\":{\"auth\":\"$GHCR_TOKEN\"}}}\n  confik:\n    image: ghcr.io/ryan-willis/confik\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - watchtower-config:/conf/watchtower\n      - confik-state:/confik_state\n\nvolumes:\n  watchtower-config:\n    external: false\n  confik-state:\n    external: false\n\n```\n\n## Notes\n\nCurrently, `confik` only supports one configuration file per service.\n\nThe value of the `confik.contents` label will be stored in raw form, so you can't really use formats that require newlines (yet). I'll probably add support for converting inline JSON to various formats like YAML in the future via some `confik.format` label, or allowing for escaped characters like newlines to be included in the `confik.contents` label. TBD.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryan-willis%2Fconfik","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryan-willis%2Fconfik","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryan-willis%2Fconfik/lists"}