{"id":15704212,"url":"https://github.com/cicirello/alpine-plus-plus","last_synced_at":"2025-10-07T06:51:07.686Z","repository":{"id":39852687,"uuid":"291530040","full_name":"cicirello/alpine-plus-plus","owner":"cicirello","description":"A lightweight Docker container for shell scripting with git and GNU tools on Alpine Linux","archived":false,"fork":false,"pushed_at":"2025-08-12T13:09:39.000Z","size":157,"stargazers_count":8,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-10T02:57:12.519Z","etag":null,"topics":["alpine","alpine-linux","bash","coreutils","docker-image","findutils","gawk","git"],"latest_commit_sha":null,"homepage":"https://actions.cicirello.org/alpine-plus-plus/","language":"Dockerfile","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/cicirello.png","metadata":{"funding":{"github":"cicirello","patreon":null,"open_collective":null,"ko_fi":"cicirello","tidelift":null,"community_bridge":null,"liberapay":"cicirello","issuehunt":null,"otechie":null,"custom":null},"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,"zenodo":null}},"created_at":"2020-08-30T18:38:18.000Z","updated_at":"2025-08-12T13:09:37.000Z","dependencies_parsed_at":"2022-07-26T13:48:02.880Z","dependency_job_id":"c72fe881-6965-46ac-acda-9e8d25a8e063","html_url":"https://github.com/cicirello/alpine-plus-plus","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/cicirello/alpine-plus-plus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2Falpine-plus-plus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2Falpine-plus-plus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2Falpine-plus-plus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2Falpine-plus-plus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cicirello","download_url":"https://codeload.github.com/cicirello/alpine-plus-plus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2Falpine-plus-plus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278734407,"owners_count":26036404,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"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":["alpine","alpine-linux","bash","coreutils","docker-image","findutils","gawk","git"],"created_at":"2024-10-03T20:10:46.043Z","updated_at":"2025-10-07T06:51:07.645Z","avatar_url":"https://github.com/cicirello.png","language":"Dockerfile","funding_links":["https://github.com/sponsors/cicirello","https://ko-fi.com/cicirello","https://liberapay.com/cicirello"],"categories":[],"sub_categories":[],"readme":"# alpine-plus-plus\n\n[![alpine-plus-plus - A lightweight Docker container for shell scripting with git and GNU tools on Alpine Linux)](https://actions.cicirello.org/images/alpine-plus-plus640.png)](#alpine-plus-plus)\n\nWebsite for our GitHub Actions and tools for developing them: https://actions.cicirello.org/\n\n| __Docker Hub__ | [![Docker Image Version (latest by date)](https://img.shields.io/docker/v/cicirello/alpine-plus-plus?label=Docker%20Hub\u0026logo=docker)](https://hub.docker.com/r/cicirello/alpine-plus-plus) [![Docker Pulls](https://img.shields.io/docker/pulls/cicirello/alpine-plus-plus?logo=docker)](https://hub.docker.com/r/cicirello/alpine-plus-plus) |\n| :--- | :--- |\n| __GitHub__ | [![GitHub release (latest by date)](https://img.shields.io/github/v/release/cicirello/alpine-plus-plus?logo=github)](https://github.com/cicirello/alpine-plus-plus/releases) |\n| __Image Stats__ | [![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/cicirello/alpine-plus-plus?logo=docker)](https://hub.docker.com/r/cicirello/alpine-plus-plus) |\n| __Build Status__ | [![build](https://github.com/cicirello/alpine-plus-plus/workflows/build/badge.svg)](https://github.com/cicirello/alpine-plus-plus/actions/workflows/docker-image.yml) |\n| __License__ | [![GitHub](https://img.shields.io/github/license/cicirello/alpine-plus-plus)](https://github.com/cicirello/alpine-plus-plus/blob/master/LICENSE) |\n| __Support__ | [![GitHub Sponsors](https://img.shields.io/badge/sponsor-30363D?logo=GitHub-Sponsors\u0026logoColor=#EA4AAA)](https://github.com/sponsors/cicirello) [![Liberapay](https://img.shields.io/badge/Liberapay-F6C915?logo=liberapay\u0026logoColor=black)](https://liberapay.com/cicirello) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/cicirello) |\n\n## Summary\nThe alpine-plus-plus Docker image is motivated by \nGithub-actions implemented primarily with bash \nand shell utilities, but is also potentially \napplicable to any use-case where you primarily \nneed bash and GNU tools like gawk, etc, as well \nas git, but also want to keep the image size \nrelatively small. Alpine Linux is used as the base \nimage. Alone, Alpine almost suits this purpose. \nHowever, it lacks the bash shell, and commonly \nused GNU tools such as findutils, gawk, etc. It \nalso lacks git. The alpine-plus-plus image adds \ngit, bash, findutils, coreutils, and gawk on top \nof Alpine Linux.\n\nFor more information, see my blog post on DEV: [gnu-on-alpine and alpine-plus-plus: Two Lightweight Containers for Implementing GitHub Container Actions with Shell Scripting](https://dev.to/cicirello/gnu-on-alpine-and-alpine-plus-plus-two-lightweight-containers-for-implementing-github-container-actions-with-shell-scripting-360i).\n\n## Multiplatform Image\n\nalpine-plus-plus has the following platforms available:\n* linux/386\n* linux/amd64\n* linux/arm/v6\n* linux/arm/v7\n* linux/arm64\n* linux/ppc64le\n* linux/s390x\n\n## Source Repository and Builds\n\nThe [source repository](https://github.com/cicirello/alpine-plus-plus) is maintained on GitHub.  The images are built on Github and pushed to [Docker Hub](https://hub.docker.com/r/cicirello/alpine-plus-plus), as well as the [Github Container Registry](https://github.com/cicirello?ecosystem=container\u0026tab=packages) using Github Actions.\n\n\n## Docker Tags and Versioning Scheme\n\nEach image pushed to Docker Hub and the Github Container Registry is tagged as follows:\n* The tag `latest` indicates, well, the latest image.\n* Tags of the form MAJOR.MINOR.PATCH (such as 3.13.5) indicate the SemVer of \n  the __Alpine__ image used as the base.\n* Tags of the form MAJOR.MINOR (e.g., 3.13) correspond to the most recent patch level of\n  the __Alpine__ image used as the base. For example, if 3.13.5 is the latest\n  release, then 3.13 maps to this as well.\n* Tags of the form MAJOR (e.g., 3) correspond to the most recent patch level of\n  the __Alpine__ image used as the base, with major corresponding major version. \n  For example, if 3.13.5 is the latest release, then 3 maps to this as well.\n\n[Semantic Versioning](https://semver.org/) uses version numbers \nof the form: MAJOR.MINOR.PATCH, where differences in \nMAJOR correspond to incompatible changes, differences in MINOR \ncorrespond to introduction of backwards compatible new functionality, \nand PATCH corresponds to backwards compatible bug fixes.\n\n\n## Installation and Usage\n\nThe pre-built image is hosted on both Docker Hub and the Github Container Registry. You can use it in the following ways.\n\n### Docker Pull Command\n\nPull the latest image from Docker Hub with the following (replace `latest` with \na specific version number if you prefer):\n\n```\ndocker pull cicirello/alpine-plus-plus:latest\n```\n\nPull from the Github Container Registry with:\n\n```\ndocker pull ghcr.io/cicirello/alpine-plus-plus:latest\n```\n\n\n### Use as a base image in a Dockerfile\n\nUse as a base image in a Dockerfile (replace `latest` with \na specific version number if you prefer):\n\n```Dockerfile\nFROM cicirello/alpine-plus-plus:latest\n\n# The rest of your Dockerfile would go here.\n```\n\nOr you can use as a base image (via the Github Container Registry) with:\n\n```Dockerfile\nFROM ghcr.io/cicirello/alpine-plus-plus:latest\n\n# The rest of your Dockerfile would go here.\n```\n\nA specific example usage can be found in the [Dockerfile\nof the generate-sitemap Github \naction](https://github.com/cicirello/generate-sitemap/blob/master/Dockerfile).\n\n\n## License\n### Source Code License\nThe source code, including the Dockerfile and anything\nelse within the [Github repository for alpine-plus-plus](https://github.com/cicirello/alpine-plus-plus), is licensed under the\n[MIT License](https://github.com/cicirello/alpine-plus-plus/blob/master/LICENSE).\n\n### Image Licenses\nAs with all pre-built Docker images, the image itself (once built, or obtained from\nDocker Hub or the Github Container Registry) contains software that is covered by a\nvariety of licenses. Since the base image is Alpine, this would include\nthe [licenses of the components of Alpine](https://pkgs.alpinelinux.org/);\nand also includes the [licenses of the GNU tools added to the image](https://www.gnu.org/licenses/gpl-3.0.en.html)\nand the [license for git](https://git-scm.com/).  \n\nIf you build and distribute an image containing your software, \nusing alpine-plus-plus as the base image, it\nis your responsibility to follow the licenses of all of the\nsoftware contained within the image.  At the time that this documentation\nis written, one of the effects of the combination of those licenses is\na constraint on the licensing of such a pre-built image containing \nyour software to the GPL 3.0 or later (derived from the inclusion of bash \nand the other GNU tools).  If you desire a more permissive license\nfor your software, one approach would be to instead distribute a\nDockerfile that builds the image containing your software, \nrather than a pre-built image of your software, which should circumvent the\nissue since you would no longer be distributing a derivative of \nGPL licensed software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcicirello%2Falpine-plus-plus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcicirello%2Falpine-plus-plus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcicirello%2Falpine-plus-plus/lists"}