{"id":16061438,"url":"https://github.com/akx/pino","last_synced_at":"2026-04-30T10:31:34.964Z","repository":{"id":143326239,"uuid":"457309911","full_name":"akx/pino","owner":"akx","description":"Stack files into a container image","archived":false,"fork":false,"pushed_at":"2022-02-09T12:29:42.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-10T18:12:36.313Z","etag":null,"topics":["docker-image","oci-image"],"latest_commit_sha":null,"homepage":"","language":"Python","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/akx.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":"2022-02-09T10:24:32.000Z","updated_at":"2022-02-09T11:01:42.000Z","dependencies_parsed_at":"2023-05-15T00:45:09.041Z","dependency_job_id":null,"html_url":"https://github.com/akx/pino","commit_stats":{"total_commits":4,"total_committers":1,"mean_commits":4.0,"dds":0.0,"last_synced_commit":"de98260b6e26eda73627df62baa61850e19c3f5e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akx%2Fpino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akx%2Fpino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akx%2Fpino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akx%2Fpino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akx","download_url":"https://codeload.github.com/akx/pino/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312093,"owners_count":20918344,"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-image","oci-image"],"created_at":"2024-10-09T04:08:55.445Z","updated_at":"2026-04-30T10:31:34.929Z","avatar_url":"https://github.com/akx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pino\n\nStack files into a container image (without a running Docker daemon, too)\n\n## Standing on the shoulders of giants\n\nThis project is really just a thin wrapper around\n\n- [Skopeo](https://github.com/containers/skopeo) for extracting and manipulating Docker and OCI images\n- [Umoci](https://github.com/opencontainers/umoci) for manipulating OCI images\n\n## Requirements\n\n- Python 3.6+\n- Skopeo and Umoci\n\n## Usage example\n\n- Start from a `python:3.10` image available to your local Docker daemon,\n- Add a layer containing the local `./tests/app` directory as `/app`\n- Save the result as `appified-python.tar` with an embedded tag `appified-python:latest` (which can be `docker load`ed):\n\n```\npython3 -m pino --base-image python:3.10 --dest-image ./appified-python.tar --add ./tests/app:/app --dest-tag appified-python:latest\n```\n\nThe same, but directly to the local Docker daemon:\n\n```\npython3 -m pino --base-image python:3.10 --dest-image appified-python:latest --add ./tests/app:/app\n```\n\n### Look ma, no Docker\n\nHow about without Docker running at all?! This grabs Python 3.10 from docker.io, applies our changes and saves a tarball.\n\n```\npython3 -m pino --base-image docker://docker.io/python:3.10 --dest-image appified-python.tar --add ./tests/app:/app\n```\n\nSince pino uses Skopeo under the hood, you can follow [Skopeo's authentication](https://github.com/containers/skopeo#authenticating-to-a-registry) instructions, then directly `--dest-image docker://myregistry.local:5000/` too.\n\n## Caveats\n\n- Pino currently requires quite some additional disk space.\n- UIDs are not mapped. Unless your local user's UID is the one you want in the container, it's not going to be correct.\n\n## What's with the name?\n\n`pino` is Finnish for \"stack\", and that's what this does.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakx%2Fpino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakx%2Fpino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakx%2Fpino/lists"}