{"id":20425336,"url":"https://github.com/catseye/the-cannery","last_synced_at":"2026-04-20T06:33:01.163Z","repository":{"id":45137221,"uuid":"187221710","full_name":"catseye/The-Cannery","owner":"catseye","description":"MIRROR of https://codeberg.org/catseye/The-Cannery : Common Docker image building zone for Cat's Eye Technologies' distributions","archived":false,"fork":false,"pushed_at":"2023-09-17T19:09:05.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-05T04:45:11.737Z","etag":null,"topics":["docker-image","docker-image-builder","docker-images","software-distribution","software-preservation"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/u/catseye","language":"Shell","has_issues":false,"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/catseye.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}},"created_at":"2019-05-17T13:31:38.000Z","updated_at":"2023-10-31T11:48:24.000Z","dependencies_parsed_at":"2025-01-15T15:19:34.666Z","dependency_job_id":null,"html_url":"https://github.com/catseye/The-Cannery","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/catseye/The-Cannery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FThe-Cannery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FThe-Cannery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FThe-Cannery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FThe-Cannery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catseye","download_url":"https://codeload.github.com/catseye/The-Cannery/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FThe-Cannery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32036388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-image","docker-image-builder","docker-images","software-distribution","software-preservation"],"created_at":"2024-11-15T07:12:53.940Z","updated_at":"2026-04-20T06:33:01.146Z","avatar_url":"https://github.com/catseye.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"The Cannery\n===========\n\nExperimental\n| _See also:_ [The Platform](https://git.catseye.tc/The-Platform)\n\n- - - -\n\n[Cat's Eye Technologies][] now has [Docker images available on Docker Hub][]\nfor several of its distributions.\n\nPutting a Dockerfile and a build script in each distribution repository\nfelt not-quite-right somehow, so this repository was created to hold all\nthe Dockerfiles, build scripts, and documentation for each Docker image.\n\nIn addition -- and this is significant -- there is a set of driver\nscripts in the `bin` directory of this repository, which run the\nexecutables in these containers almost as if you had the executable\ninstalled locally.\n\nEach driver script will download any image it needs from Docker hub\nfirst, if it is not yet present on the system.\n\nSo all you need to do is put `bin` on your executable search path,\nand suddenly you have a myriad of Cat's Eye Technologies' tools and\nlanguage interpreters and such at your disposal, right from your\ncommand line (or shell, or Terminal, or whatever you like to call it.)\n\n### Caveats\n\n\"almost as if you had it installed locally\" does have some limitations.\n\nThe containerized executable works on the host's file system through a\nbind mount.  The driver script establishes a bind mount from the current\nworking directory of the host, and the container can't see any of\nthe host's filesystem that is outside that directory.\n\nSo, for example, you can't tell a compiler to output the generated\nexecutable file to `../built/out.foo` because it can't see `../`.\n\nAlso, the Docker daemon always runs as root.  The script tells the\ncontainer to be run as the current user on the host.  This prevents\nthe files that the executable writes from being owned by root.  But\nthis directive is not total; the Docker daemon still runs as root.\nFor that reason I would recommend not running the driver scripts\nfrom a directory that contains anything important, such as `/`.\n\nAlso, there are ways to make the Docker daemon run as non-root.\nBut they are outside the scope of this document.\n\n### Containerization for Preservation\n\nBecause the idea here is \"containerization for preservation\" rather\nthan \"containerization for deployment\", we don't rebuild the images\nregularly.  Every time one of these images is rebuilt, it pulls\nthe latest packages from the system package manager repository,\nwhich rebuilds that layer, which causes new layers to be built on\ntop of it, bloating everything.  Since they are not used as servers,\nand because they are containerized, the need to update system packages\nregularly to fix critical (exploitable) defects is reduced.\n\n### Base Images\n\n#### Python 3.x\n\nFor Python 3.x-based executables, the base image used is usually\n**python-3.5.7-slim-stretch**.  More recent images may be based on\n**python-3.11-slim**.\n\n#### Python 2.7.x\n\nFor Python 2.7-based executables, the base image used is\n**bitnami/python:2.7.18-prod**.\n\n#### Erlang R16\n\nFor Erlang R16-based executables, the base image used is\n**andreineculau/erlang-r16b03-1:latest**.\n\n[Cat's Eye Technologies]: https://catseye.tc/\n[Docker images available on Docker Hub]: https://hub.docker.com/u/catseye\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fthe-cannery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatseye%2Fthe-cannery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fthe-cannery/lists"}