Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Node debian core variant
Browse files Browse the repository at this point in the history
LaurentGoderre committed Apr 10, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent b016843 commit 39f78db
Showing 16 changed files with 224 additions and 6 deletions.
12 changes: 12 additions & 0 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -68,6 +68,16 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Build core base image
if: ${{ endsWith(matrix.variant, '-core') }}
uses: docker/build-push-action@v5
with:
push: false
load: true
context: .
file: ./${{ steps.short-version.outputs.result }}/${{ matrix.base }}/Dockerfile
tags: node:${{ matrix.version }}-${{ matrix.base }}

- name: Build image
uses: docker/build-push-action@v5
with:
@@ -91,7 +101,9 @@ jobs:
[ "${output}" = 'success' ]
- name: Test for npm
if: ${{ ! endsWith(matrix.variant, '-core') }}
run: docker run --rm node:${{ matrix.version }}-${{ matrix.variant }} npm --version

- name: Test for yarn
if: ${{ ! endsWith(matrix.variant, '-core') }}
run: docker run --rm node:${{ matrix.version }}-${{ matrix.variant }} yarn --version
13 changes: 13 additions & 0 deletions 18/bookworm-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:bookworm-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 18.20.1

COPY --from=node:18.20.1-bookworm-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:18.20.1-bookworm-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions 18/bullseye-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:bullseye-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 18.20.1

COPY --from=node:18.20.1-bullseye-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:18.20.1-bullseye-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions 18/buster-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:buster-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 18.20.1

COPY --from=node:18.20.1-buster-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:18.20.1-buster-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions 20/bookworm-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:bookworm-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 20.12.1

COPY --from=node:20.12.1-bookworm-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:20.12.1-bookworm-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions 20/bullseye-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:bullseye-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 20.12.1

COPY --from=node:20.12.1-bullseye-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:20.12.1-bullseye-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions 20/buster-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:buster-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 20.12.1

COPY --from=node:20.12.1-buster-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:20.12.1-buster-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions 21/bookworm-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:bookworm-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 21.7.2

COPY --from=node:21.7.2-bookworm-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:21.7.2-bookworm-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions 21/bullseye-core/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:bullseye-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 21.7.2

COPY --from=node:21.7.2-bullseye-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:21.7.2-bullseye-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
13 changes: 13 additions & 0 deletions Dockerfile-debian-core.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM debian:name-slim

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node

ENV NODE_VERSION 0.0.0

COPY --from=node:0.0.0-slim --link /usr/local/bin/ /usr/local/bin/
COPY --from=node:0.0.0-slim --link /usr/local/include/node/ /usr/local/include/node/

ENTRYPOINT ["docker-entrypoint.sh"]

CMD [ "node" ]
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@ The official Node.js docker image, made with love by the node community.
- [`node:bullseye`](#nodebullseye)
- [`node:bookworm`](#nodebookworm)
- [`node:slim`](#nodeslim)
- [`node:core`](#nodecore)
- [License](#license)
- [Supported Docker versions](#supported-docker-versions)
- [Supported Node.js versions](#supported-nodejs-versions)
@@ -223,6 +224,10 @@ in an environment where *only* the Node.js image will be deployed and you have
space constraints, we highly recommend using the default image of this
repository.

### `node:core`

This image is a variant of the slim image without npm or Yarn.

## License

[License information](https://github.com/nodejs/node/blob/master/LICENSE) for
10 changes: 5 additions & 5 deletions architectures
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
bashbrew-arch variants
amd64 alpine3.18,alpine3.19,bookworm,bookworm-slim,bullseye,bullseye-slim,buster,buster-slim
amd64 alpine3.18,alpine3.19,bookworm,bookworm-slim,bookworm-core,bullseye,bullseye-slim,bullseye-core,buster,buster-slim,buster-core
arm32v6 alpine3.18,alpine3.19
arm32v7 alpine3.18,alpine3.19,bookworm,bookworm-slim,bullseye,bullseye-slim,buster,buster-slim
arm64v8 alpine3.18,alpine3.19,bookworm,bookworm-slim,bullseye,bullseye-slim,buster,buster-slim
arm32v7 alpine3.18,alpine3.19,bookworm,bookworm-slim,bookworm-core,bullseye,bullseye-slim,bullseye-core,buster,buster-slim,buster-core
arm64v8 alpine3.18,alpine3.19,bookworm,bookworm-slim,bookworm-core,bullseye,bullseye-slim,bullseye-core,buster,buster-slim,buster-core
i386 alpine3.18,alpine3.19
ppc64le alpine3.18,alpine3.19,bookworm,bookworm-slim,bullseye,bullseye-slim,buster,buster-slim
s390x alpine3.18,alpine3.19,bookworm,bookworm-slim,bullseye,bullseye-slim,buster,buster-slim
ppc64le alpine3.18,alpine3.19,bookworm,bookworm-slim,bookworm-core,bullseye,bullseye-slim,bullseye-core,buster,buster-slim,buster-core
s390x alpine3.18,alpine3.19,bookworm,bookworm-slim,bookworm-core,bullseye,bullseye-slim,bullseye-core,buster,buster-slim,buster-core
14 changes: 14 additions & 0 deletions functions.sh
Original file line number Diff line number Diff line change
@@ -193,6 +193,20 @@ function is_debian_slim() {
return 1
}

function is_debian_core() {
local variant
variant=$1
shift

IFS=' ' read -ra debianVersions <<< "$(get_config "./" "debian_versions")"
for d in "${debianVersions[@]}"; do
if [ "${d}-core" = "${variant}" ]; then
return 0
fi
done
return 1
}

function get_fork_name() {
local version
version=$1
11 changes: 11 additions & 0 deletions genMatrix.js
Original file line number Diff line number Diff line change
@@ -60,6 +60,17 @@ const getDockerfileMatrixEntry = (file) => {

const version = getFullNodeVersionFromDockerfile(file);

// Specify the base image that needs to be built before the core one
if (variant.endsWith('-core')) {
const base = variant.replace('-core', '-slim')

return {
version,
variant,
base,
}
}

return {
version,
variant,
9 changes: 8 additions & 1 deletion update.sh
Original file line number Diff line number Diff line change
@@ -134,6 +134,7 @@ function update_node_version() {

sed -Ei -e 's/^FROM (.*)/FROM '"$fromprefix"'\1/' "${dockerfile}-tmp"
sed -Ei -e 's/^(ENV NODE_VERSION ).*/\1'"${nodeVersion}"'/' "${dockerfile}-tmp"
sed -Ei -e 's/^(COPY --from=node:)[^-]*/\1'"${nodeVersion}-${variant%'-core'}"'/' "${dockerfile}-tmp"

currentYarnVersion="$(grep "ENV YARN_VERSION" "${dockerfile}" | cut -d' ' -f3)"
sed -Ei -e 's/^(ENV YARN_VERSION ).*/\1'"${currentYarnVersion}"'/' "${dockerfile}-tmp"
@@ -167,6 +168,8 @@ function update_node_version() {
sed -Ei -e "s/(buildpack-deps:)name/\\1${variant}/" "${dockerfile}-tmp"
elif is_debian_slim "${variant}"; then
sed -Ei -e "s/(debian:)name-slim/\\1${variant}/" "${dockerfile}-tmp"
elif is_debian_core "${variant}"; then
sed -Ei -e "s/(debian:)name-slim/\\1${variant%"-core"}-slim/" "${dockerfile}-tmp"
fi

if diff -q "${dockerfile}-tmp" "${dockerfile}" > /dev/null; then
@@ -221,11 +224,15 @@ for version in "${versions[@]}"; do
template_file="${parentpath}/Dockerfile-debian.template"
elif is_debian_slim "${variant}"; then
template_file="${parentpath}/Dockerfile-slim.template"
elif is_debian_core "${variant}"; then
template_file="${parentpath}/Dockerfile-debian-core.template"
elif is_alpine "${variant}"; then
template_file="${parentpath}/Dockerfile-alpine.template"
fi

cp "${parentpath}/docker-entrypoint.sh" "${version}/${variant}/docker-entrypoint.sh"
if ! is_debian_core "${variant}"; then
cp "${parentpath}/docker-entrypoint.sh" "${version}/${variant}/docker-entrypoint.sh"
fi
if [ "${update_version}" -eq 0 ] && [ "${update_variant}" -eq 0 ]; then
update_node_version "${baseuri}" "${versionnum}" "${template_file}" "${version}/${variant}/Dockerfile" "${variant}" &
pids+=($!)
52 changes: 52 additions & 0 deletions versions.json
Original file line number Diff line number Diff line change
@@ -38,6 +38,13 @@
"ppc64le",
"s390x"
],
"bookworm-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye": [
"amd64",
"arm32v7",
@@ -51,6 +58,13 @@
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
]
}
},
@@ -93,6 +107,13 @@
"ppc64le",
"s390x"
],
"bookworm-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye": [
"amd64",
"arm32v7",
@@ -107,6 +128,13 @@
"ppc64le",
"s390x"
],
"bullseye-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"buster": [
"amd64",
"arm32v7",
@@ -116,6 +144,11 @@
"amd64",
"arm32v7",
"arm64v8"
],
"buster-core": [
"amd64",
"arm32v7",
"arm64v8"
]
}
},
@@ -158,6 +191,13 @@
"ppc64le",
"s390x"
],
"bookworm-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye": [
"amd64",
"arm32v7",
@@ -172,6 +212,13 @@
"ppc64le",
"s390x"
],
"bullseye-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"buster": [
"amd64",
"arm32v7",
@@ -181,6 +228,11 @@
"amd64",
"arm32v7",
"arm64v8"
],
"buster-core": [
"amd64",
"arm32v7",
"arm64v8"
]
}
}

0 comments on commit 39f78db

Please sign in to comment.