{"id":13581835,"url":"https://github.com/tailscale/mkctr","last_synced_at":"2025-04-04T11:13:41.734Z","repository":{"id":39213836,"uuid":"430795360","full_name":"tailscale/mkctr","owner":"tailscale","description":"mkctr: cross platform container builder for go","archived":false,"fork":false,"pushed_at":"2025-02-28T05:09:40.000Z","size":124,"stargazers_count":90,"open_issues_count":1,"forks_count":9,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-03-28T10:08:00.282Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tailscale.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":"2021-11-22T17:04:04.000Z","updated_at":"2025-03-22T08:12:16.000Z","dependencies_parsed_at":"2024-06-27T23:40:17.100Z","dependency_job_id":"1de9a4de-ee5e-4b1c-9b73-72c926d84116","html_url":"https://github.com/tailscale/mkctr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fmkctr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fmkctr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fmkctr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fmkctr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tailscale","download_url":"https://codeload.github.com/tailscale/mkctr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247166168,"owners_count":20894654,"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":[],"created_at":"2024-08-01T15:02:16.069Z","updated_at":"2025-04-04T11:13:41.713Z","avatar_url":"https://github.com/tailscale.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# `mkctr`: cross platform container builder for go\n\n`mkctr` is a small go binary which uses `GOOS= GOARCH= go build` directly to compile go binaries and then uses [go-containerregistry](https://github.com/google/go-containerregistry) to create and publish the new containers based on the desired platforms.\n\nThis is inspired by [ko](https://github.com/google/ko) which is awesome but doesn't support multiple binaries in a single container.\n\n## Usage\n\n```bash\nmkctr \\\n  --base=\"alpine:latest\" \\\n  --gopaths=\"\\\n    tailscale.com/cmd/tailscale:/usr/local/bin/tailscale, \\\n    tailscale.com/cmd/tailscaled:/usr/local/bin/tailscaled\" \\\n  --tags=\"latest\" \\\n  --repos=\"tailscale/tailscale\" \\\n  [--files=foo.txt:/var/lib/foo.txt,bar.txt:/var/lib/bar.txt] \\\n  [--target=\u003ctarget\u003e] \\ # e.g. flyio, local\n  [--push] \\\n  [--] [\u003ccmd\u003e...]\n```\n\n`mkctr` auto discovers `GOOS`/`GOARCH` from the specified base image. If the base image supports multiple platforms, binaries are compiled for each platform as long as it's one of `linux/amd64`, `linux/386`, `linux/arm`, `linux/arm64`. Multi-arch base image must be either an [OCI image index](https://github.com/opencontainers/image-spec/blob/main/image-index.md) or [Docker manifest list](https://github.com/openshift/docker-distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list).\n`mkctr` produces image of the same media type as the base image and uses the media type of the base image, or of the individual image references in case of a multi-arch image, to determine the media type of the layer it builds.\n\n\n## Maturity\nThis is under active development. While Tailscale uses it, backwards compatability is not guaranteed, and some functionality is missing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailscale%2Fmkctr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftailscale%2Fmkctr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailscale%2Fmkctr/lists"}