Skip to content

Commit

Permalink
Add Node debian core variant
Browse files Browse the repository at this point in the history
  • Loading branch information
LaurentGoderre committed Apr 10, 2024
1 parent b016843 commit 39f78db
Show file tree
Hide file tree
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
Expand Up @@ -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:
Expand All @@ -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
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down
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
Expand Up @@ -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
Expand Down
11 changes: 11 additions & 0 deletions genMatrix.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
9 changes: 8 additions & 1 deletion update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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+=($!)
Expand Down
52 changes: 52 additions & 0 deletions versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@
"ppc64le",
"s390x"
],
"bookworm-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye": [
"amd64",
"arm32v7",
Expand All @@ -51,6 +58,13 @@
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
]
}
},
Expand Down Expand Up @@ -93,6 +107,13 @@
"ppc64le",
"s390x"
],
"bookworm-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye": [
"amd64",
"arm32v7",
Expand All @@ -107,6 +128,13 @@
"ppc64le",
"s390x"
],
"bullseye-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"buster": [
"amd64",
"arm32v7",
Expand All @@ -116,6 +144,11 @@
"amd64",
"arm32v7",
"arm64v8"
],
"buster-core": [
"amd64",
"arm32v7",
"arm64v8"
]
}
},
Expand Down Expand Up @@ -158,6 +191,13 @@
"ppc64le",
"s390x"
],
"bookworm-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"bullseye": [
"amd64",
"arm32v7",
Expand All @@ -172,6 +212,13 @@
"ppc64le",
"s390x"
],
"bullseye-core": [
"amd64",
"arm32v7",
"arm64v8",
"ppc64le",
"s390x"
],
"buster": [
"amd64",
"arm32v7",
Expand All @@ -181,6 +228,11 @@
"amd64",
"arm32v7",
"arm64v8"
],
"buster-core": [
"amd64",
"arm32v7",
"arm64v8"
]
}
}
Expand Down

0 comments on commit 39f78db

Please sign in to comment.