diff --git a/.github/workflows/buildx.yml b/.github/workflows/buildx.yml index ea531f6d..f006f4f7 100644 --- a/.github/workflows/buildx.yml +++ b/.github/workflows/buildx.yml @@ -3,146 +3,138 @@ name: buildx on: schedule: - cron: "37 05 * * *" - pull_request: push: + branches: + - master + pull_request: jobs: buildx: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - docker-file: - - path: 2.6/12 - tags: "2.6-12 2.6-erbium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.6/12/slim - tags: "2.6-slim-12 2.6-slim-erbium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.6/12/alpine - tags: "2.6-alpine-12 2.6-alpine-erbium" - platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6 - - - path: 2.6/14 - tags: "2.6 2.6-14 2.6-fermium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.6/14/slim - tags: "2.6-slim 2.6-slim-14 2.6-slim-fermium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.6/14/alpine - tags: "2.6-alpine 2.6-alpine-14 2.6-alpine-fermium" - platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6 - - - path: 2.7/12 - tags: "2.7-12 2.7-erbium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.7/12/slim - tags: "2.7-slim-12 2.7-slim-erbium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.7/12/alpine - tags: "2.7-alpine-12 2.7-alpine-erbium" - platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6 - - - path: 2.7/14 - tags: "2.7 2.7-14 2.7-fermium" + ruby-version: ["3.2", "3.3", "3.4", "4.0"] + node-version: [22, 24] + variant: [default, slim, alpine] + include: + - variant: default platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.7/14/slim - tags: "2.7-slim 2.7-slim-14 2.7-slim-fermium" + - variant: slim platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 2.7/14/alpine - tags: "2.7-alpine 2.7-alpine-14 2.7-alpine-fermium" + - variant: alpine platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6 - - path: 3.0/12 - tags: "3.0-12 3.0-erbium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 3.0/12/slim - tags: "3.0-slim-12 3.0-slim-erbium" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 3.0/12/alpine - tags: "3.0-alpine-12 3.0-alpine-erbium" - platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6 - - - path: 3.0/14 - tags: "3.0 3.0-14 3.0-fermium latest" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 3.0/14/slim - tags: "3.0-slim 3.0-slim-14 3.0-slim-fermium slim" - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - path: 3.0/14/alpine - tags: "3.0-alpine 3.0-alpine-14 3.0-alpine-fermium alpine" - platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6 steps: - - name: Checkout - uses: actions/checkout@v2.4.0 + - uses: actions/checkout@v7.0.1 - - name: Prepare + - name: Set Node.js codename + id: nodename + run: | + case "${{ matrix.node-version }}" in + "22") echo "codename=jod" >> $GITHUB_OUTPUT ;; + "24") echo "codename=krypton" >> $GITHUB_OUTPUT ;; + "26") echo "codename=lithium" >> $GITHUB_OUTPUT ;; + "28") echo "codename=magnesium" >> $GITHUB_OUTPUT ;; + esac + + - name: Generate tags id: prepare run: | DOCKER_IMAGE=timbru31/ruby-node - - TEMP="${{ matrix.docker-file.tags }}" - TAGZ=($TEMP) - VERSION=${TAGZ[0]} - - for i in "${!TAGZ[@]}"; do - if [ "$i" -eq "0" ]; - then - TAGS="${DOCKER_IMAGE}:${TAGZ[$i]}" - else - TAGS="${TAGS},${DOCKER_IMAGE}:${TAGZ[$i]}" + VERSION="${{ matrix.ruby-version }}" + NODE_CODENAME=${{ steps.nodename.outputs.codename }} + if [ "${{ matrix.variant }}" = "default" ]; then + VARIANT="" + else + VARIANT="-${{ matrix.variant }}" + fi + TAGS="${DOCKER_IMAGE}:${VERSION}${VARIANT}-${{ matrix.node-version }}" + TAGS="${TAGS},${DOCKER_IMAGE}:${VERSION}${VARIANT}-${NODE_CODENAME}" + if [ "${{ matrix.ruby-version }}" = "4.0" ] && [ "${{ matrix.node-version }}" = "24" ]; then + if [ "${{ matrix.variant }}" = "default" ]; then + TAGS="${TAGS},${DOCKER_IMAGE}:3,${DOCKER_IMAGE}:latest" + elif [ "${{ matrix.variant }}" = "slim" ]; then + TAGS="${TAGS},${DOCKER_IMAGE}:3-slim,${DOCKER_IMAGE}:slim" + elif [ "${{ matrix.variant }}" = "alpine" ]; then + TAGS="${TAGS},${DOCKER_IMAGE}:3-alpine,${DOCKER_IMAGE}:alpine" fi - done - - echo ::set-output name=docker_image::${DOCKER_IMAGE} - echo ::set-output name=version::${VERSION} - echo ::set-output name=tags::${TAGS} + fi + echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT + echo "version=${VERSION}${VARIANT}-${{ matrix.node-version }}" >> $GITHUB_OUTPUT + echo "tags=${TAGS}" >> $GITHUB_OUTPUT - name: Set up QEMU - uses: docker/setup-qemu-action@v1.2.0 + uses: docker/setup-qemu-action@v4.1.0 - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v1.6.0 + uses: docker/setup-buildx-action@v4.2.0 with: install: true - - name: Available platforms - run: echo ${{ steps.buildx.outputs.platforms }} + - name: Set build path + id: buildpath + run: | + if [ "${{ matrix.variant }}" = "default" ]; then + echo "path=./${{ matrix.ruby-version }}/${{ matrix.node-version }}" >> $GITHUB_OUTPUT + else + echo "path=./${{ matrix.ruby-version }}/${{ matrix.node-version }}/${{ matrix.variant }}" >> $GITHUB_OUTPUT + fi + + - name: Set platforms + id: platforms + shell: bash + run: | + # For Node >=24, remove linux/arm/v7 from the variant's platform list + BASE_PLATFORMS="${{ matrix.platforms }}" + NODE_MAJOR="${{ matrix['node-version'] }}" + if [ "$NODE_MAJOR" -ge 24 ]; then + IFS=',' read -ra arr <<< "$BASE_PLATFORMS" + out=() + for p in "${arr[@]}"; do + if [ "$p" != "linux/arm/v7" ] && [ -n "$p" ]; then + out+=("$p") + fi + done + (IFS=','; echo "platforms=${out[*]}") >> "$GITHUB_OUTPUT" + else + echo "platforms=$BASE_PLATFORMS" >> "$GITHUB_OUTPUT" + fi - name: Docker Buildx (build) - uses: docker/build-push-action@v2.7.0 + uses: docker/build-push-action@v7.3.0 if: success() && !contains(github.ref, 'master') with: push: false - context: ./${{ matrix.docker-file.path }} - file: ./${{ matrix.docker-file.path }}/Dockerfile + context: ${{ steps.buildpath.outputs.path }} + file: ${{ steps.buildpath.outputs.path }}/Dockerfile build-args: REFRESHED_AT=$(date +%Y-%m-%d) - platforms: ${{ matrix.docker-file.platforms }} + platforms: ${{ steps.platforms.outputs.platforms }} tags: ${{ steps.prepare.outputs.tags }} - name: Docker Login if: success() && github.event_name != 'pull_request' && contains(github.ref, 'master') - uses: docker/login-action@v1.10.0 + uses: docker/login-action@v4.4.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Docker Buildx (push) - uses: docker/build-push-action@v2.7.0 + uses: docker/build-push-action@v7.3.0 if: success() && github.event_name != 'pull_request' && contains(github.ref, 'master') with: push: true - context: ./${{ matrix.docker-file.path }} - file: ./${{ matrix.docker-file.path }}/Dockerfile + context: ${{ steps.buildpath.outputs.path }} + file: ${{ steps.buildpath.outputs.path }}/Dockerfile build-args: REFRESHED_AT=$(date +%Y-%m-%d) - platforms: ${{ matrix.docker-file.platforms }} + platforms: ${{ steps.platforms.outputs.platforms }} tags: ${{ steps.prepare.outputs.tags }} - name: Inspect Image if: always() && github.event_name != 'pull_request' && contains(github.ref, 'master') run: | - docker buildx imagetools inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} + docker buildx imagetools inspect $(echo "${{ steps.prepare.outputs.tags }}" | cut -d',' -f1) - name: Clear if: always() && github.event_name != 'pull_request' diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 360dcdbf..d3bfaa53 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -1,49 +1,62 @@ name: Test Docker image -on: [push, pull_request, workflow_dispatch] +on: + push: + branches: + - master + pull_request: + workflow_dispatch: jobs: build: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ruby-version: ["3.2", "3.3", "3.4", "4.0"] + node-version: [22, 24] + variant: [default, slim, alpine] + steps: - - uses: actions/checkout@v2.4.0 - - name: Build the Docker image + - uses: actions/checkout@v7.0.1 + + - name: Build and test Docker image run: | - echo "2.6 with Node.js 12" - docker run -i $(docker build -q 2.6/12) /bin/sh -c "ruby --version && node --version" - echo "2.6 slim with Node.js 12" - docker run -i $(docker build -q 2.6/12/slim) /bin/sh -c "ruby --version && node --version" - echo "2.6 alpine with Node.js 12" - docker run -i $(docker build -q 2.6/12/alpine) /bin/sh -c "ruby --version && node --version" - echo "2.6 with Node.js 14" - docker run -i $(docker build -q 2.6/14) /bin/sh -c "ruby --version && node --version" - echo "2.6 slim with Node.js 14" - docker run -i $(docker build -q 2.6/14/slim) /bin/sh -c "ruby --version && node --version" - echo "2.6 alpine with Node.js 14" - docker run -i $(docker build -q 2.6/14/alpine) /bin/sh -c "ruby --version && node --version" - - echo "2.7 with Node.js 12" - docker run -i $(docker build -q 2.7/12) /bin/sh -c "ruby --version && node --version" - echo "2.7 slim with Node.js 12" - docker run -i $(docker build -q 2.7/12/slim) /bin/sh -c "ruby --version && node --version" - echo "2.7 alpine with Node.js 12" - docker run -i $(docker build -q 2.7/12/alpine) /bin/sh -c "ruby --version && node --version" - echo "2.7 with Node.js 14" - docker run -i $(docker build -q 2.7/14) /bin/sh -c "ruby --version && node --version" - echo "2.7 slim with Node.js 14" - docker run -i $(docker build -q 2.7/14/slim) /bin/sh -c "ruby --version && node --version" - echo "2.7 alpine with Node.js 14" - docker run -i $(docker build -q 2.7/14/alpine) /bin/sh -c "ruby --version && node --version" - - echo "3.0 with Node.js 12" - docker run -i $(docker build -q 3.0/12) /bin/sh -c "ruby --version && node --version" - echo "3.0 slim with Node.js 12" - docker run -i $(docker build -q 3.0/12/slim) /bin/sh -c "ruby --version && node --version" - echo "3.0 alpine with Node.js 12" - docker run -i $(docker build -q 3.0/12/alpine) /bin/sh -c "ruby --version && node --version" - echo "3.0 with Node.js 14" - docker run -i $(docker build -q 3.0/14) /bin/sh -c "ruby --version && node --version" - echo "3.0 slim with Node.js 14" - docker run -i $(docker build -q 3.0/14/slim) /bin/sh -c "ruby --version && node --version" - echo "3.0 alpine" - docker run -i $(docker build -q 3.0/14/alpine) /bin/sh -c "ruby --version && node --version" + if [ "${{ matrix.variant }}" = "default" ]; then + VARIANT_PATH="" + VARIANT_LABEL="" + else + VARIANT_PATH="/${{ matrix.variant }}" + VARIANT_LABEL=" ${{ matrix.variant }}" + fi + + IMAGE_PATH="${{ matrix.ruby-version }}/${{ matrix.node-version }}${VARIANT_PATH}" + echo "${{ matrix.ruby-version }} with Node.js ${{ matrix.node-version }}${VARIANT_LABEL}" + + # Run container and capture version outputs + VERSIONS=$(docker run -i $(docker build -q ${IMAGE_PATH}) /bin/sh -c "ruby --version && node --version && npm --version") + echo "$VERSIONS" + + # Check Ruby version + if ! echo "$VERSIONS" | grep -q "ruby ${{ matrix.ruby-version }}"; then + echo "::error::Expected Ruby ${{ matrix.ruby-version }} but got different version" + exit 1 + fi + + # Check Node version + if ! echo "$VERSIONS" | grep -q "v${{ matrix.node-version }}"; then + echo "::error::Expected Node.js ${{ matrix.node-version }} but got different version" + exit 1 + fi + + auto-merge: + runs-on: ubuntu-latest + needs: build + permissions: + pull-requests: write + contents: write + steps: + - name: Automatically merge dependabot upgrades + uses: fastify/github-action-merge-dependabot@v3.15.0 + with: + target: minor diff --git a/.github/workflows/hadolint.yml b/.github/workflows/hadolint.yml index 025dfe8e..8ccd4688 100644 --- a/.github/workflows/hadolint.yml +++ b/.github/workflows/hadolint.yml @@ -1,13 +1,19 @@ name: Lint Dockerfiles -on: [push, pull_request] +on: + push: + branches: + - master + pull_request: jobs: build: runs-on: macos-latest steps: - - uses: actions/checkout@v2.4.0 + - uses: actions/checkout@v7.0.1 + - run: brew install hadolint + - run: | - hadolint {2.6,2.7,3.0}/**/*Dockerfile - hadolint {2.6,2.7,3.0}/**/**/*Dockerfile + hadolint {3.2,3.3,3.4,4.0}/**/*Dockerfile + hadolint {3.2,3.3,3.4,4.0}/**/**/*Dockerfile diff --git a/.hadolint.yaml b/.hadolint.yaml index 2400e47c..95c61c4f 100644 --- a/.hadolint.yaml +++ b/.hadolint.yaml @@ -1,4 +1,3 @@ ignored: - DL3008 - DL3018 - - DL3017 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..866a616e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "yaml.schemas": { + "https://json.schemastore.org/github-workflow.json": ".github/workflows/*.yml" + } +} diff --git a/2.6/12/Dockerfile b/2.6/12/Dockerfile deleted file mode 100644 index ff5d0dfc..00000000 --- a/2.6/12/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM ruby:2.6 -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* \ - && npm install -g yarn@1 diff --git a/2.6/12/alpine/Dockerfile b/2.6/12/alpine/Dockerfile deleted file mode 100644 index 4ba50210..00000000 --- a/2.6/12/alpine/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM ruby:2.6-alpine -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -RUN apk -U upgrade \ - && apk add --repository https://dl-cdn.alpinelinux.org/alpine/v3.12/main/ --no-cache \ - "nodejs<14" \ - "nodejs-npm<14" \ - yarn diff --git a/2.6/12/slim/Dockerfile b/2.6/12/slim/Dockerfile deleted file mode 100644 index 77b81f64..00000000 --- a/2.6/12/slim/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ruby:2.6-slim -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -# hadolint ignore=DL3009 -RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ - curl \ - gnupg2 - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - \ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* \ - && npm install -g yarn@1 diff --git a/2.6/14/Dockerfile b/2.6/14/Dockerfile deleted file mode 100644 index baa4e930..00000000 --- a/2.6/14/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM ruby:2.6 -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/2.6/14/alpine/Dockerfile b/2.6/14/alpine/Dockerfile deleted file mode 100644 index c50928a2..00000000 --- a/2.6/14/alpine/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM ruby:2.6-alpine -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -RUN apk -U upgrade \ - && apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/main/ --no-cache \ - nodejs \ - npm \ - yarn diff --git a/2.6/14/slim/Dockerfile b/2.6/14/slim/Dockerfile deleted file mode 100644 index 0b31fc83..00000000 --- a/2.6/14/slim/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ruby:2.6-slim -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -# hadolint ignore=DL3009 -RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ - curl \ - gnupg2 - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - \ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/2.7/12/Dockerfile b/2.7/12/Dockerfile deleted file mode 100644 index f9d65d70..00000000 --- a/2.7/12/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM ruby:2.7 -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/2.7/12/alpine/Dockerfile b/2.7/12/alpine/Dockerfile deleted file mode 100644 index c65e629a..00000000 --- a/2.7/12/alpine/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM ruby:2.7-alpine -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -RUN apk -U upgrade \ - && apk add --repository https://dl-cdn.alpinelinux.org/alpine/v3.12/main/ --no-cache \ - "nodejs<14" \ - "nodejs-npm<14" \ - yarn diff --git a/2.7/12/slim/Dockerfile b/2.7/12/slim/Dockerfile deleted file mode 100644 index 4baa5703..00000000 --- a/2.7/12/slim/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ruby:2.7-slim -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -# hadolint ignore=DL3009 -RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ - curl \ - gnupg2 - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/2.7/14/Dockerfile b/2.7/14/Dockerfile deleted file mode 100644 index 7c822514..00000000 --- a/2.7/14/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM ruby:2.7 -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/2.7/14/alpine/Dockerfile b/2.7/14/alpine/Dockerfile deleted file mode 100644 index 871db860..00000000 --- a/2.7/14/alpine/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM ruby:2.7-alpine -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -RUN apk -U upgrade \ - && apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/main/ --no-cache \ - nodejs \ - npm \ - yarn diff --git a/2.7/14/slim/Dockerfile b/2.7/14/slim/Dockerfile deleted file mode 100644 index bde3a9be..00000000 --- a/2.7/14/slim/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ruby:2.7-slim -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -# hadolint ignore=DL3009 -RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ - curl \ - gnupg2 - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/3.0/12/Dockerfile b/3.0/12/Dockerfile deleted file mode 100644 index 2a89f22d..00000000 --- a/3.0/12/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM ruby:3.0 -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/3.0/12/alpine/Dockerfile b/3.0/12/alpine/Dockerfile deleted file mode 100644 index 560f95b6..00000000 --- a/3.0/12/alpine/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM ruby:3.0-alpine -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -RUN apk -U upgrade \ - && apk add --repository https://dl-cdn.alpinelinux.org/alpine/v3.12/main/ --no-cache \ - "nodejs<14" \ - "nodejs-npm<14" \ - yarn diff --git a/3.0/12/slim/Dockerfile b/3.0/12/slim/Dockerfile deleted file mode 100644 index fcd19c1f..00000000 --- a/3.0/12/slim/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ruby:3.0-slim -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -# hadolint ignore=DL3009 -RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ - curl \ - gnupg2 - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/3.0/14/Dockerfile b/3.0/14/Dockerfile deleted file mode 100644 index a7d91035..00000000 --- a/3.0/14/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM ruby:3.0 -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/3.0/14/alpine/Dockerfile b/3.0/14/alpine/Dockerfile deleted file mode 100644 index 9d2e048c..00000000 --- a/3.0/14/alpine/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM ruby:3.0-alpine -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -RUN apk -U upgrade \ - && apk add --repository https://dl-cdn.alpinelinux.org/alpine/edge/main/ --no-cache \ - nodejs \ - npm \ - yarn diff --git a/3.0/14/slim/Dockerfile b/3.0/14/slim/Dockerfile deleted file mode 100644 index 10407164..00000000 --- a/3.0/14/slim/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ruby:3.0-slim -LABEL maintainer "Tim Brust " - -ARG REFRESHED_AT -ENV REFRESHED_AT $REFRESHED_AT - -# hadolint ignore=DL3009 -RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ - curl \ - gnupg2 - -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -\ - && apt-get update -qq && apt-get install -qq --no-install-recommends \ - nodejs \ - && apt-get upgrade -qq \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/*\ - && npm install -g yarn@1 diff --git a/3.2/22/Dockerfile b/3.2/22/Dockerfile new file mode 100644 index 00000000..b3e1a335 --- /dev/null +++ b/3.2/22/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.2 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.2/22/alpine/Dockerfile b/3.2/22/alpine/Dockerfile new file mode 100644 index 00000000..d0119055 --- /dev/null +++ b/3.2/22/alpine/Dockerfile @@ -0,0 +1,14 @@ +FROM ruby:3.2-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/main >> /etc/apk/repositories \ + && apk -U upgrade \ + && apk add --no-cache \ + ada-libs@old-stable \ + nodejs@old-stable \ + npm@old-stable \ + yarn diff --git a/3.2/22/slim/Dockerfile b/3.2/22/slim/Dockerfile new file mode 100644 index 00000000..242722d9 --- /dev/null +++ b/3.2/22/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.2-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.2/24/Dockerfile b/3.2/24/Dockerfile new file mode 100644 index 00000000..42ed5353 --- /dev/null +++ b/3.2/24/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.2 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.2/24/alpine/Dockerfile b/3.2/24/alpine/Dockerfile new file mode 100644 index 00000000..33c6a0af --- /dev/null +++ b/3.2/24/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:3.2-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs \ + npm \ + yarn diff --git a/3.2/24/slim/Dockerfile b/3.2/24/slim/Dockerfile new file mode 100644 index 00000000..546a8cb7 --- /dev/null +++ b/3.2/24/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.2-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.3/22/Dockerfile b/3.3/22/Dockerfile new file mode 100644 index 00000000..73907ff6 --- /dev/null +++ b/3.3/22/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.3 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.3/22/alpine/Dockerfile b/3.3/22/alpine/Dockerfile new file mode 100644 index 00000000..ac259e1c --- /dev/null +++ b/3.3/22/alpine/Dockerfile @@ -0,0 +1,14 @@ +FROM ruby:3.3-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/main >> /etc/apk/repositories \ + && apk -U upgrade \ + && apk add --no-cache \ + ada-libs@old-stable \ + nodejs@old-stable \ + npm@old-stable \ + yarn diff --git a/3.3/22/slim/Dockerfile b/3.3/22/slim/Dockerfile new file mode 100644 index 00000000..827b3f8b --- /dev/null +++ b/3.3/22/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.3-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.3/24/Dockerfile b/3.3/24/Dockerfile new file mode 100644 index 00000000..d7a8b04f --- /dev/null +++ b/3.3/24/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.3 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.3/24/alpine/Dockerfile b/3.3/24/alpine/Dockerfile new file mode 100644 index 00000000..930c7be4 --- /dev/null +++ b/3.3/24/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:3.3-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs \ + npm \ + yarn diff --git a/3.3/24/slim/Dockerfile b/3.3/24/slim/Dockerfile new file mode 100644 index 00000000..fc1b8f6a --- /dev/null +++ b/3.3/24/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.3-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.4/22/Dockerfile b/3.4/22/Dockerfile new file mode 100644 index 00000000..fce41094 --- /dev/null +++ b/3.4/22/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.4 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.4/22/alpine/Dockerfile b/3.4/22/alpine/Dockerfile new file mode 100644 index 00000000..ca3294b9 --- /dev/null +++ b/3.4/22/alpine/Dockerfile @@ -0,0 +1,14 @@ +FROM ruby:3.4-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/main >> /etc/apk/repositories \ + && apk -U upgrade \ + && apk add --no-cache \ + ada-libs@old-stable \ + nodejs@old-stable \ + npm@old-stable \ + yarn diff --git a/3.4/22/slim/Dockerfile b/3.4/22/slim/Dockerfile new file mode 100644 index 00000000..c097a2ac --- /dev/null +++ b/3.4/22/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.4-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.4/24/Dockerfile b/3.4/24/Dockerfile new file mode 100644 index 00000000..18f9c297 --- /dev/null +++ b/3.4/24/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:3.4 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/3.4/24/alpine/Dockerfile b/3.4/24/alpine/Dockerfile new file mode 100644 index 00000000..36a3a8fc --- /dev/null +++ b/3.4/24/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:3.4-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs \ + npm \ + yarn diff --git a/3.4/24/slim/Dockerfile b/3.4/24/slim/Dockerfile new file mode 100644 index 00000000..5a2be814 --- /dev/null +++ b/3.4/24/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:3.4-slim +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/4.0/22/Dockerfile b/4.0/22/Dockerfile new file mode 100644 index 00000000..1ec3f189 --- /dev/null +++ b/4.0/22/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:4.0 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/4.0/22/alpine/Dockerfile b/4.0/22/alpine/Dockerfile new file mode 100644 index 00000000..eb4ff844 --- /dev/null +++ b/4.0/22/alpine/Dockerfile @@ -0,0 +1,14 @@ +FROM ruby:4.0-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.22/main >> /etc/apk/repositories \ + && apk -U upgrade \ + && apk add --no-cache \ + ada-libs@old-stable \ + nodejs@old-stable \ + npm@old-stable \ + yarn diff --git a/4.0/22/slim/Dockerfile b/4.0/22/slim/Dockerfile new file mode 100644 index 00000000..cd211537 --- /dev/null +++ b/4.0/22/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:4.0 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=22 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/4.0/24/Dockerfile b/4.0/24/Dockerfile new file mode 100644 index 00000000..1b755583 --- /dev/null +++ b/4.0/24/Dockerfile @@ -0,0 +1,19 @@ +FROM ruby:4.0 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/4.0/24/alpine/Dockerfile b/4.0/24/alpine/Dockerfile new file mode 100644 index 00000000..7b4e7497 --- /dev/null +++ b/4.0/24/alpine/Dockerfile @@ -0,0 +1,11 @@ +FROM ruby:4.0-alpine +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT + +RUN apk -U upgrade \ + && apk add --no-cache \ + nodejs \ + npm \ + yarn diff --git a/4.0/24/slim/Dockerfile b/4.0/24/slim/Dockerfile new file mode 100644 index 00000000..0bc4c0fb --- /dev/null +++ b/4.0/24/slim/Dockerfile @@ -0,0 +1,25 @@ +FROM ruby:4.0 +LABEL maintainer="Tim Prüssing " + +ARG REFRESHED_AT +ENV REFRESHED_AT=$REFRESHED_AT +ARG NODE_MAJOR=24 + +# hadolint ignore=DL3009 +RUN apt-get update -qq && apt-get install -qq --no-install-recommends \ + curl \ + gnupg2 \ + libatomic1 + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +RUN printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 1001' > /etc/apt/preferences.d/nodesource \ + && mkdir -p /etc/apt/keyrings \ + && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ + && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \ + && apt-get update -qq && apt-get install -qq --no-install-recommends \ + nodejs \ + && apt-get upgrade -qq \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*\ + && npm install -g yarn@1 diff --git a/LICENSE b/LICENSE index c2b3a7fb..6f43b58b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 Tim Brust +Copyright (c) 2026 Tim Prüssing Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 9285983b..92a54210 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -# Ruby 2.6, 2.7 or 3.0 with Node.js 12 or 14 LTS Dockerfile +# Ruby 3.2, 3.3, 3.4, 4.0 with Node.js 22 LTS or Node.js 24 LTS Dockerfile [![Docker Automated build](https://img.shields.io/docker/automated/timbru31/ruby-node.svg)](https://hub.docker.com/r/timbru31/ruby-node/) [![buildx Status](https://github.com/timbru31/docker-ruby-node/workflows/buildx/badge.svg)](https://github.com/timbru31/docker-ruby-node/actions?query=workflow%3Abuildx) [![Lint Dockerfiles](https://github.com/timbru31/docker-ruby-node/workflows/Lint%20Dockerfiles/badge.svg)](https://github.com/timbru31/docker-ruby-node/actions?query=workflow%3A%22Lint+Dockerfiles%22) -A minimal Dockerfile based on Ruby (2.6, 2.7 or 3.0) Dockerfile (regular, slim or alpine) with Node.js 12 LTS (Erbium) or Node.js 14 LTS (Fermium) installed. Please note, that the Node.js 12 LTS (Erbium) builds for alpine might be outdated due to Alpine's update policy. +A minimal Dockerfile based on Ruby (3.2, 3.3, 3.4 or 4.0) Dockerfile (regular, slim or alpine) with Node.js 22 LTS (Jod) or Node.js 24 LTS (Krypton) installed. ## What's included -- Ruby 2.6, 2.7 or 3.0 -- Node.js 12 (Erbium) LTS or 14 LTS (Fermium) -- npm 6 (latest for Node.js LTS v14 on alpine, see [why](https://gitlab.alpinelinux.org/alpine/aports/-/commit/25b10bd1a93e12a7e49fee38b0a229281ae49fb7)) +- Ruby 3.2, 3.3, 3.4, 4.0 +- Node.js 22 LTS (Jod) or Node.js 24 LTS (Krypton) +- bundled npm that comes with the respective Node.js version (latest for Node.js LTS on alpine, see [why](https://gitlab.alpinelinux.org/alpine/aports/-/commit/25b10bd1a93e12a7e49fee38b0a229281ae49fb7)) - yarn ### Available platforms @@ -19,7 +19,7 @@ These Dockerfiles leverage the new `buildx` functionality and offer the followin - linux/amd64 - linux/arm64 -- linux/arm/v7 +- linux/arm/v7 (not for Node.js >= 24) - linux/arm/v6 (not for regular or slim) - linux/386 (not for regular or slim) - linux/ppc64le (not for regular or slim) @@ -27,4 +27,4 @@ These Dockerfiles leverage the new `buildx` functionality and offer the followin --- -Built by (c) Tim Brust and contributors. Released under the MIT license. +Built by (c) Tim Prüssing and contributors. Released under the MIT license.