{"id":19249985,"url":"https://github.com/prebuild/docker-images","last_synced_at":"2025-09-11T23:35:21.520Z","repository":{"id":34812172,"uuid":"167750517","full_name":"prebuild/docker-images","owner":"prebuild","description":"Docker images for cross compiling prebuilt binaries for Node.js native addons.","archived":false,"fork":false,"pushed_at":"2025-01-21T17:21:12.000Z","size":77,"stargazers_count":11,"open_issues_count":6,"forks_count":7,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-01T13:21:16.914Z","etag":null,"topics":["addons","docker","docker-images","native-addons","nodejs","prebuildify","prebuilt"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prebuild.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-26T23:32:07.000Z","updated_at":"2025-03-11T10:30:01.000Z","dependencies_parsed_at":"2025-01-20T20:32:09.520Z","dependency_job_id":null,"html_url":"https://github.com/prebuild/docker-images","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prebuild%2Fdocker-images","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prebuild%2Fdocker-images/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prebuild%2Fdocker-images/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prebuild%2Fdocker-images/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prebuild","download_url":"https://codeload.github.com/prebuild/docker-images/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250056189,"owners_count":21367502,"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":["addons","docker","docker-images","native-addons","nodejs","prebuildify","prebuilt"],"created_at":"2024-11-09T18:15:53.584Z","updated_at":"2025-04-21T12:32:46.481Z","avatar_url":"https://github.com/prebuild.png","language":"Dockerfile","readme":"# docker-images\n\n**Docker images for cross compiling prebuilt binaries for Node.js. Used by [`prebuildify-cross`](https://github.com/prebuild/prebuildify-cross).**\n\n[![Release](https://img.shields.io/github/v/release/prebuild/docker-images)](https://github.com/prebuild/docker-images/releases/latest)\n[![Release](https://github.com/prebuild/docker-images/actions/workflows/release.yml/badge.svg)](https://github.com/prebuild/docker-images/actions/workflows/release.yml)\n[![Common Changelog](https://common-changelog.org/badge.svg)](https://common-changelog.org)\n\n## About\n\nAll images include Node.js LTS, Python 3.x, npm and a preconfigured build toolchain suitable for `node-gyp` and `prebuildify`. For example:\n\n```\n\u003e docker run --rm ghcr.io/prebuild/alpine node -v\nv16.15.1\n```\n\nImages are tagged with a major, minor and full version as well as `latest`. For example, use the following to pin to major version 2:\n\n```dockerfile\nFROM ghcr.io/prebuild/alpine:2\n```\n\n## Versioning guarantees\n\nWithin a major version range, we will not change toolchains, environment variables, working directories, users and more. However, the Node.js version will change without notice. We use Node.js [LTS](https://github.com/nodejs/Release) (at the time of building images) for a light maintenance effort. This is okay because `prebuildify` can target (the headers of) older Node.js versions while itself running on a newer version.\n\nImages that are based on [`dockcross`](https://github.com/dockcross/dockcross) (see below) may inadvertently introduce breaking changes because `dockcross` does not use semantic versions ([dockcross/dockcross#399](https://github.com/dockcross/dockcross/issues/399)) and does not maintain a changelog that would allow us to easily categorize changes and then tag our images accordingly. If this concerns you we recommend pinning to an exact version (`x.x.x`) which we treat as immutable.\n\n## Images\n\n### [`almalinux-devtoolset11`](https://github.com/orgs/prebuild/packages/container/package/almalinux-devtoolset11)\n\nCompile in AlmaLinux 8 with Red Hat Developer Toolset 11. This increases compatibility with Linux flavors because prebuilds will be compiled with GCC 11 but at runtime they will only require glibc 2.28. For comparison, compiling on Ubuntu 24.04 would require glibc 2.35.\n\nNode.js binaries are built with a similar approach but the Node.js project uses RHEL 8 (which requires a Red Hat subscription) instead of AlmaLinux.\n\nPreconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the libc flavor, to set them apart from musl prebuilds, e.g. `linux-x64/node.glibc.node`.\n\n### [`centos7-devtoolset7`](https://github.com/orgs/prebuild/packages/container/package/centos7-devtoolset7)\n\n_This image is not updated anymore and does not support Node.js 18 and C++ 20. Instead use `almalinux-devtoolset11`._\n\nCompile in CentOS 7 with Red Hat Developer Toolset 7. This increases compatibility with Linux flavors because prebuilds will be compiled with GCC 7 but at runtime they will only require glibc 2.17. Makes prebuilds compatible with Debian 8, Ubuntu 14.04, RHEL 7, CentOS 7 and other Linux flavors with an old glibc.\n\n\u003e The RHEL folks put in a ton of work to make the devtoolsets work on their older base systems (libc mainly), which involves shipping a delta library that contains the new stuff that can be statically linked in where it's used.\n\u003e\n\u003e \\-- \u003ccite\u003e[**@rvagg**](https://github.com/rvagg) ([prebuild/docker-images#8](https://github.com/prebuild/docker-images/pull/8))\u003c/cite\u003e\n\nPreconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the libc flavor, to set them apart from musl prebuilds, e.g. `linux-x64/node.glibc.node`.\n\n### [`alpine`](https://github.com/orgs/prebuild/packages/container/package/alpine)\n\nCompile in Alpine, which uses musl instead of glibc and therefore can't run regular linux prebuilds. Worse, it sometimes does successfully _load_ such a  prebuild during `npm install` - which prevents a compilation fallback from kicking in - and then segfaults at runtime. You can fix this situation in two ways: by shipping an `alpine` prebuild and/or by shipping a `centos7-devtoolset7` prebuild, because the latter will be skipped in Alpine thanks to the `glibc` tag.\n\nPreconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the libc flavor, to set them apart from glibc prebuilds, e.g. `linux-x64/node.musl.node`.\n\n### [`linux-armv6`](https://github.com/orgs/prebuild/packages/container/package/linux-armv6)\n\nCross-compile for Linux ARM. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (6).\n\n### [`linux-armv7`](https://github.com/orgs/prebuild/packages/container/package/linux-armv7)\n\nCross-compile for Linux ARM. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (7).\n\n### [`linux-armv7l-musl`](https://github.com/orgs/prebuild/packages/container/package/linux-armv7l-musl)\n\nCross-compile for Linux ARM. This image uses musl instead of glibc for Alpine linux. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (7).\n\n### [`linux-arm64`](https://github.com/orgs/prebuild/packages/container/package/linux-arm64)\n\nCross-compile for Linux ARM. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (8).\n\n### [`linux-arm64-lts`](https://github.com/orgs/prebuild/packages/container/package/linux-arm64-lts)\n\nCross-compile for Linux ARM. This image uses an old version of glibc (glibc 2.27) for compatibility. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (8).\n\n### [`linux-arm64-musl`](https://github.com/orgs/prebuild/packages/container/package/linux-arm64-musl)\n\nCross-compile for Linux ARM. This image uses musl instead of glibc for Alpine linux. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (8).\n\n### [`android-armv7`](https://github.com/orgs/prebuild/packages/container/package/android-armv7)\n\nCross-compile for Android ARM. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (7).\n\n### [`android-arm64`](https://github.com/orgs/prebuild/packages/container/package/android-arm64)\n\nCross-compile for Android ARM. This image thinly wraps a [`dockcross`](https://github.com/dockcross/dockcross) image. Preconfigures `prebuildify` to [tag](https://github.com/prebuild/prebuildify#options) prebuilds with the armv version (8).\n\n## Old images\n\nImages were previously hosted on Docker Hub. These are no longer updated:\n\n- [`centos7-devtoolset7`](https://hub.docker.com/r/prebuild/centos7-devtoolset7)\n- [`alpine`](https://hub.docker.com/r/prebuild/alpine)\n- [`linux-armv6`](https://hub.docker.com/r/prebuild/linux-armv6)\n- [`linux-armv7`](https://hub.docker.com/r/prebuild/linux-armv7)\n- [`linux-arm64`](https://hub.docker.com/r/prebuild/linux-arm64)\n- [`android-armv7`](https://hub.docker.com/r/prebuild/android-armv7)\n- [`android-arm64`](https://hub.docker.com/r/prebuild/android-arm64)\n\n## Development\n\n### Releasing\n\nUpdate [`CHANGELOG.md`](CHANGELOG.md) according to [Common Changelog](https://common-changelog), for which you might like [`hallmark`](https://github.com/vweevers/hallmark) to pull commit messages into the changelog:\n\n```\nhallmark cc add minor\n```\n\nTweak `CHANGELOG.md` as needed until `hallmark lint` is happy. Then commit, tag and push. For example:\n\n```\ngit add CHANGELOG.md\ngit commit -m \"2.1.0\"\ngit tag -a v2.1.0 -m v2.1.0\ngit push --follow-tags\n```\n\nThe git tag triggers [CI/CD](https://github.com/prebuild/docker-images/actions) to publish new images to [GHCR](https://github.com/orgs/prebuild/packages?ecosystem=container). A changelog entry is required.\n\n## License\n\n[GPL-3.0-only](LICENSE) © 2019 `prebuild` contributors.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprebuild%2Fdocker-images","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprebuild%2Fdocker-images","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprebuild%2Fdocker-images/lists"}