diff --git a/.github/workflows/node-22.yml b/.github/workflows/node-22.yml deleted file mode 100644 index bd5a8a4..0000000 --- a/.github/workflows/node-22.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: CI - -on: - push: - branches: - - main - pull_request: - -jobs: - test-node-22: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6.0.2 - - - name: Check node-22/node-base.Dockerfile - uses: hadolint/hadolint-action@v3.3.0 - with: - dockerfile: node-22/node-base.Dockerfile - - - name: Check node-22/node-dev.Dockerfile - uses: hadolint/hadolint-action@v3.3.0 - with: - dockerfile: node-22/node-dev.Dockerfile - - - name: Check examples/node-22/Dockerfile - uses: hadolint/hadolint-action@v3.3.0 - with: - dockerfile: examples/node-22/Dockerfile - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y build-essential wait-for-it - - - name: Build containers - run: make node-22 - - - name: Run node-22-example container - run: | - docker run -d --name node-22-example -p 3000:3000 node-22-example - - - name: Wait for node-22-example container - run: wait-for-it localhost:3000 - - - name: Check node-22-example endpoint is working - run: | - for i in {1..10}; do curl http://localhost:3000/ && break || sleep 1; done - - - name: Stop node-22-example container - run: docker stop node-22-example diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2c8cfac..b4f285a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,36 +8,6 @@ on: workflow_dispatch: jobs: - publish-node-22: - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - name: Login to Quay.io - uses: docker/login-action@v3.7.0 - with: - registry: quay.io - username: ${{ secrets.QUAY_ID }} - password: ${{ secrets.QUAY_PW }} - - - name: Checkout repository - uses: actions/checkout@v6.0.2 - - - name: Build node container - run: | - make build-node-22-base - make build-node-22-dev - - - name: Publish container - run: | - TAG=$(git rev-parse --short HEAD) - docker tag quay.io/mynth/node:22-base quay.io/mynth/node:22-base-$TAG - docker tag quay.io/mynth/node:22-dev quay.io/mynth/node:22-dev-$TAG - docker push quay.io/mynth/node:22-base - docker push quay.io/mynth/node:22-dev - docker push quay.io/mynth/node:22-base-$TAG - docker push quay.io/mynth/node:22-dev-$TAG - if: github.ref == 'refs/heads/main' - publish-node-24: runs-on: ubuntu-latest timeout-minutes: 10 diff --git a/Makefile b/Makefile index 43232b3..adf4948 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,6 @@ -all: node-22 node-24 -node-22: build-node-22-base build-node-22-dev build-node-22-example +all: node-24 node-24: build-node-24-base build-node-24-dev build-node-24-example -build-node-22-base: - docker build -t quay.io/mynth/node:22-base -f node-22/node-base.Dockerfile node-22 - -build-node-22-dev: - docker build -t quay.io/mynth/node:22-dev -f node-22/node-dev.Dockerfile node-22 - -build-node-22-example: - docker build -t node-22-example examples/node-22 - build-node-24-base: docker build -t quay.io/mynth/node:24-base -f node-24/node-base.Dockerfile node-24 diff --git a/README.md b/README.md index 3a329f8..d2d3b2e 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ and can be accessed using the `quay.io/mynth/` registry. The `node` images are lightweight and optimized containers for running node.js applications. Two tags exist for the `node` container: -- quay.io/mynth/node:22-base -- quay.io/mynth/node:22-dev +- quay.io/mynth/node:24-base +- quay.io/mynth/node:24-dev ### Usage @@ -23,7 +23,7 @@ The first part of the container uses the `dev` tag to build the application: ``` dockerfile -FROM quay.io/mynth/node:22-dev as builder +FROM quay.io/mynth/node:24-dev as builder WORKDIR /app COPY --chown=noddy:noddy package*.json ./ @@ -46,7 +46,7 @@ Now that your application is built, copy the built files to the image with the `base` tag: ``` dockerfile -FROM quay.io/mynth/node:22-base +FROM quay.io/mynth/node:24-base WORKDIR /app COPY --from=builder --chown=noddy:noddy /app ./ ``` diff --git a/examples/node-22/.dockerignore b/examples/node-22/.dockerignore deleted file mode 100644 index c7cdd6e..0000000 --- a/examples/node-22/.dockerignore +++ /dev/null @@ -1,30 +0,0 @@ -Dockerfile - -# Ignore node_modules, as they will be installed during the build process -node_modules - -# Ignore logs -*.log - -# Ignore any local environment files -.env - -# Ignore any build or distribution folders -dist -build - -# Ignore any test or coverage folders -test -coverage - -# Ignore any editor or OS specific files -*.swp -*.swo -*.swn -*.bak -*.tmp -*.sublime* -*.idea -*.vscode -.DS_Store -Thumbs.db diff --git a/examples/node-22/.gitignore b/examples/node-22/.gitignore deleted file mode 100644 index 3c3629e..0000000 --- a/examples/node-22/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/examples/node-22/Dockerfile b/examples/node-22/Dockerfile deleted file mode 100644 index b41bda5..0000000 --- a/examples/node-22/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM quay.io/mynth/node:22-dev AS builder - -# Build the project -WORKDIR /app -COPY --chown=noddy:noddy . ./ -RUN pnpm install --prod - -FROM quay.io/mynth/node:22-base -WORKDIR /app -COPY --from=builder --chown=noddy:noddy /app ./ -CMD ["node", "--import", "tsx", "entrypoint.ts"] diff --git a/examples/node-22/entrypoint.ts b/examples/node-22/entrypoint.ts deleted file mode 100644 index cf26af4..0000000 --- a/examples/node-22/entrypoint.ts +++ /dev/null @@ -1,5 +0,0 @@ -const main = () => { - console.log("hello"); -}; - -main(); diff --git a/examples/node-22/package.json b/examples/node-22/package.json deleted file mode 100644 index d18175f..0000000 --- a/examples/node-22/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "hello-node", - "version": "0.1.0", - "private": true, - "packageManager": "pnpm@10.12.1", - "scripts": { - "build": "pnpm tsc" - }, - "dependencies": { - "tsx": "^4.20.3" - }, - "devDependencies": { - "@types/node": "^24.0.1", - "typescript": "^5.8.3" - } -} diff --git a/examples/node-22/pnpm-lock.yaml b/examples/node-22/pnpm-lock.yaml deleted file mode 100644 index 5face4e..0000000 --- a/examples/node-22/pnpm-lock.yaml +++ /dev/null @@ -1,333 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - tsx: - specifier: ^4.20.3 - version: 4.20.3 - devDependencies: - '@types/node': - specifier: ^24.0.1 - version: 24.0.1 - typescript: - specifier: ^5.8.3 - version: 5.8.3 - -packages: - - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@types/node@24.0.1': - resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} - - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} - engines: {node: '>=18'} - hasBin: true - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - tsx@4.20.3: - resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} - engines: {node: '>=18.0.0'} - hasBin: true - - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@7.8.0: - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} - -snapshots: - - '@esbuild/aix-ppc64@0.25.5': - optional: true - - '@esbuild/android-arm64@0.25.5': - optional: true - - '@esbuild/android-arm@0.25.5': - optional: true - - '@esbuild/android-x64@0.25.5': - optional: true - - '@esbuild/darwin-arm64@0.25.5': - optional: true - - '@esbuild/darwin-x64@0.25.5': - optional: true - - '@esbuild/freebsd-arm64@0.25.5': - optional: true - - '@esbuild/freebsd-x64@0.25.5': - optional: true - - '@esbuild/linux-arm64@0.25.5': - optional: true - - '@esbuild/linux-arm@0.25.5': - optional: true - - '@esbuild/linux-ia32@0.25.5': - optional: true - - '@esbuild/linux-loong64@0.25.5': - optional: true - - '@esbuild/linux-mips64el@0.25.5': - optional: true - - '@esbuild/linux-ppc64@0.25.5': - optional: true - - '@esbuild/linux-riscv64@0.25.5': - optional: true - - '@esbuild/linux-s390x@0.25.5': - optional: true - - '@esbuild/linux-x64@0.25.5': - optional: true - - '@esbuild/netbsd-arm64@0.25.5': - optional: true - - '@esbuild/netbsd-x64@0.25.5': - optional: true - - '@esbuild/openbsd-arm64@0.25.5': - optional: true - - '@esbuild/openbsd-x64@0.25.5': - optional: true - - '@esbuild/sunos-x64@0.25.5': - optional: true - - '@esbuild/win32-arm64@0.25.5': - optional: true - - '@esbuild/win32-ia32@0.25.5': - optional: true - - '@esbuild/win32-x64@0.25.5': - optional: true - - '@types/node@24.0.1': - dependencies: - undici-types: 7.8.0 - - esbuild@0.25.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 - - fsevents@2.3.3: - optional: true - - get-tsconfig@4.10.1: - dependencies: - resolve-pkg-maps: 1.0.0 - - resolve-pkg-maps@1.0.0: {} - - tsx@4.20.3: - dependencies: - esbuild: 0.25.5 - get-tsconfig: 4.10.1 - optionalDependencies: - fsevents: 2.3.3 - - typescript@5.8.3: {} - - undici-types@7.8.0: {} diff --git a/examples/node-22/tsconfig.json b/examples/node-22/tsconfig.json deleted file mode 100644 index 7516605..0000000 --- a/examples/node-22/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": "./", - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "bundler", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true - }, - "include": ["**/*"], - "exclude": ["node_modules"] -} diff --git a/node-22/node-base.Dockerfile b/node-22/node-base.Dockerfile deleted file mode 100644 index 228eb40..0000000 --- a/node-22/node-base.Dockerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM ubuntu:24.04 AS build - -ENV TINI_VERSION=v0.19.0 -ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini -RUN chmod +x /tini - -# hadolint ignore=DL3008 -RUN apt-get update -qq && \ - apt-get install -y --no-install-recommends xz-utils && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -ADD https://nodejs.org/dist/v22.21.1/node-v22.21.1-linux-x64.tar.xz . - -RUN mkdir -p /usr/local/lib/nodejs && \ - tar -xJf node-v22.21.1-linux-x64.tar.xz && \ - mv node-v22.21.1-linux-x64 /usr/local/lib/nodejs && \ - rm node-v22.21.1-linux-x64.tar.xz - -ENV PATH=$PATH:/usr/local/lib/nodejs/node-v22.21.1-linux-x64/bin - -FROM ubuntu:24.04 -COPY --from=build /tini /sbin/tini -ENTRYPOINT ["/sbin/tini", "--"] - -# hadolint ignore=DL3022 -COPY --from=quay.io/mynth/docker-vault-cli /usr/local/bin/vault-cli /usr/local/bin/vault-cli - -RUN useradd --create-home --shell /bin/bash noddy && \ - mkdir /app && \ - chown -R noddy:noddy /app - -COPY --from=build /usr/local/lib/nodejs /usr/local/lib/nodejs -ENV PATH=/app/node_modules/.bin:/usr/local/lib/nodejs/node-v22.21.1-linux-x64/bin:$PATH - -USER noddy -ENV NODE_ENV=production -RUN npm config set update-notifier false diff --git a/node-22/node-dev.Dockerfile b/node-22/node-dev.Dockerfile deleted file mode 100644 index 5f96013..0000000 --- a/node-22/node-dev.Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM ubuntu:24.04 AS build - -ENV TINI_VERSION=v0.19.0 -ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini -RUN chmod +x /tini - -# hadolint ignore=DL3008 -RUN apt-get update -qq && \ - apt-get install -y --no-install-recommends xz-utils && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -ADD https://nodejs.org/dist/v22.21.1/node-v22.21.1-linux-x64.tar.xz . - -RUN mkdir -p /usr/local/lib/nodejs && \ - tar -xJf node-v22.21.1-linux-x64.tar.xz && \ - mv node-v22.21.1-linux-x64 /usr/local/lib/nodejs && \ - rm node-v22.21.1-linux-x64.tar.xz - -ENV PATH=$PATH:/usr/local/lib/nodejs/node-v22.21.1-linux-x64/bin -RUN npm install -g corepack@0.34.5 && \ - npm config set update-notifier false - -FROM ubuntu:24.04 -COPY --from=build /tini /sbin/tini -ENTRYPOINT ["/sbin/tini", "--"] - -# hadolint ignore=DL3022 -COPY --from=quay.io/mynth/docker-vault-cli /usr/local/bin/vault-cli /usr/local/bin/vault-cli - -RUN useradd --create-home --shell /bin/bash noddy && \ - mkdir /app && \ - chown -R noddy:noddy /app - -COPY --from=build /usr/local/lib/nodejs /usr/local/lib/nodejs -ENV PNPM_HOME=/home/noddy/.local/share/pnpm -ENV PATH=$PNPM_HOME:/app/node_modules/.bin:/usr/local/lib/nodejs/node-v22.21.1-linux-x64/bin:$PATH - -# hadolint ignore=DL3008 -RUN corepack enable && \ - corepack prepare pnpm@10.26.0 --activate && \ - apt-get update -qq && \ - apt-get install -y --no-install-recommends \ - python3.12 \ - python3.12-dev \ - build-essential \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - ln -s /usr/bin/python3.12 /usr/bin/python && \ - npm install -g node-gyp@12.1.0 turbo@2.6.3 - -USER noddy -ENV NODE_ENV=development