{"id":31029955,"url":"https://github.com/cowwoc/canister","last_synced_at":"2026-05-07T10:31:41.810Z","repository":{"id":307408803,"uuid":"1029404871","full_name":"cowwoc/canister","owner":"cowwoc","description":"A modern Java client for Docker: fluent API, test-friendly, and Kubernetes-ready.","archived":false,"fork":false,"pushed_at":"2025-07-31T02:29:14.000Z","size":7359,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-30T03:56:43.414Z","etag":null,"topics":["devops","docker","docker-java","integration-testing","java","kubernetes","testcontainers"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cowwoc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support-policy-1.0.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"cowwoc"}},"created_at":"2025-07-31T02:18:19.000Z","updated_at":"2025-08-05T17:06:12.000Z","dependencies_parsed_at":"2025-07-31T05:38:52.847Z","dependency_job_id":null,"html_url":"https://github.com/cowwoc/canister","commit_stats":null,"previous_names":["cowwoc/canister"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cowwoc/canister","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowwoc%2Fcanister","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowwoc%2Fcanister/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowwoc%2Fcanister/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowwoc%2Fcanister/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cowwoc","download_url":"https://codeload.github.com/cowwoc/canister/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowwoc%2Fcanister/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32733409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["devops","docker","docker-java","integration-testing","java","kubernetes","testcontainers"],"created_at":"2025-09-13T22:57:07.831Z","updated_at":"2026-05-07T10:31:41.795Z","avatar_url":"https://github.com/cowwoc.png","language":"Java","funding_links":["https://github.com/sponsors/cowwoc"],"categories":[],"sub_categories":[],"readme":"[![Maven Central](https://maven-badges.sml.io/maven-central/io.github.cowwoc.canister/canister/badge.svg)](https://search.maven.org/search?q=g:io.github.cowwoc.canister)\n[![build-status](https://github.com/cowwoc/canister/workflows/Build/badge.svg)](https://github.com/cowwoc/canister/actions/?query=workflow%3Abuild)\n\n# \u003cimg src=\"docs/logo.svg\" width=64 height=64 alt=\"logo\"\u003e Canister\n\n[![API](https://img.shields.io/badge/api_docs-5B45D5.svg)](https://cowwoc.github.io/canister/0.10/)\n[![Changelog](https://img.shields.io/badge/changelog-A345D5.svg)](docs/changelog.md)\n\nA modern Java client for [Docker](https://www.docker.com/): fluent API, test-friendly, and Kubernetes-ready.\n\n✅ A fluent, strongly typed API.\u003cbr\u003e\n✅ Support for building images with and without root access.\u003cbr\u003e\n✅ Easy integration with CI and tests.\u003cbr\u003e\n✅ First-class support for capturing stdout/stderr and process exit status.\u003cbr\u003e\n\nTo get started, add this Maven dependency:\n\n```xml\n\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.cowwoc.canister\u003c/groupId\u003e\n  \u003cartifactId\u003ecanister\u003c/artifactId\u003e\n  \u003cversion\u003e0.10\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Example\n\n```java\nimport io.github.cowwoc.canister.core.id.ImageId;\nimport io.github.cowwoc.canister.core.resource.ImageBuilder.Exporter;\nimport io.github.cowwoc.canister.docker.api.client.Docker;\nimport io.github.cowwoc.canister.docker.api.client.DockerClient;\n\nimport java.io.IOException;\n\nclass Example\n{\n\tpublic static void main(String[] args) throws IOException, InterruptedException\n\t{\n\t\ttry (DockerClient docker = Docker.fromPath())\n\t\t{\n\t\t\tImageId id = docker.buildImage().\n\t\t\t\texport(Exporter.dockerImage().build()).\n\t\t\t\tapply(\".\");\n\n\t\t\tdocker.tagImage(id, \"rocket-ship\");\n\t\t\tdocker.pushImage(\"rocket-ship\").apply();\n\t\t}\n\t}\n}\n```\n\n## Getting Started\n\nSee the [API documentation](https://cowwoc.github.io/canister/0.10/) for more details.\n\n## 💖 Support Ongoing Development 💖\n\nIf you find this project helpful, please consider [sponsoring me](https://github.com/sponsors/cowwoc).\nMaintaining quality open-source software takes significant time and effort—especially while balancing family\nlife with young children. Your support helps make this work sustainable.\n\n## Missing Features?\n\nThe `canister` API covers a wide range of functionality, and since my time is limited, new features are added\nbased on user requests. If there's a property or capability you'd like to see added,\nplease [open a new issue](issues/new).\n\n## Licensing\n\nThis library is dual-licensed:\n\n- ✅ [ModernJDK License](docs/modern-jdk-license-1.0.md) (free for personal use or small businesses):\n  - You may use, modify, and redistribute this software for free when:\n    - It is compiled for and executed on the latest generally available (GA) Java Development Kit (JDK)\n      version at the time of deployment.\n    - You are an individual or a company with 10 or fewer employees.\n    - You do not rebrand or white-label the software.\n  - You are not required to update existing deployments when a newer JDK is released.\n\n- 💼 [Commercial License](docs/commercial-license-1.0.md):\n  - Required for:\n    - Compiling, running, or distributing the software for older (non-GA) JDK versions.\n    - Use by companies with more than 10 employees.\n    - White-labeling or rebranding the library in any form.\n\n## Dependencies\n\n* See [Third party licenses](LICENSE-3RD-PARTY.md) for the licenses of the dependencies.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcowwoc%2Fcanister","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcowwoc%2Fcanister","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcowwoc%2Fcanister/lists"}