diff --git a/26/base/Dockerfile b/26/base/Dockerfile new file mode 100644 index 0000000..86ffb67 --- /dev/null +++ b/26/base/Dockerfile @@ -0,0 +1,39 @@ +# tags=articulate/node:26 +# syntax=docker/dockerfile:1 +FROM node:26-bookworm-slim + +ENV SERVICE_ROOT=/service SERVICE_USER=service SERVICE_UID=1001 NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/aws-rds-global-bundle.pem + +ARG TARGETARCH + +ADD --chmod=755 https://raw.githubusercontent.com/articulate/docker-bootstrap/main/scripts/install_packages /usr/local/bin/install_packages +ADD --chmod=755 https://raw.githubusercontent.com/articulate/docker-bootstrap/main/scripts/awscli.sh /tmp/awscli.sh +# Add AWS RDS CA trusted root certificates for node +ADD --chmod=644 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem /usr/local/share/ca-certificates/aws-rds-global-bundle.pem + +RUN install_packages make dumb-init ca-certificates && /tmp/awscli.sh && rm /tmp/awscli.sh \ + # Create our own user and remove the node user + && groupadd --gid $SERVICE_UID $SERVICE_USER \ + && useradd --create-home --shell /bin/bash --gid $SERVICE_UID --uid $SERVICE_UID $SERVICE_USER \ + && userdel -r node \ + # Enable Corepack + && npm install --global corepack@0.34.6 \ + && corepack enable \ + # Split PEM bundle into individual cert files for update-ca-certificates + && csplit -s -z -n 3 -f /usr/local/share/ca-certificates/aws-rds-ca- \ + /usr/local/share/ca-certificates/aws-rds-global-bundle.pem \ + '/-----BEGIN CERTIFICATE-----/' '{*}' \ + && for f in /usr/local/share/ca-certificates/aws-rds-ca-*; do mv "$f" "$f.crt"; done \ + && update-ca-certificates + +ADD --chmod=755 https://github.com/articulate/docker-bootstrap/releases/latest/download/docker-bootstrap_linux_${TARGETARCH} /entrypoint +ADD --chmod=755 https://raw.githubusercontent.com/articulate/docker-bootstrap/main/scripts/docker-secrets /usr/local/bin/secrets +ADD --chmod=755 https://raw.githubusercontent.com/vishnubob/wait-for-it/81b1373f17855a4dc21156cfe1694c31d7d1792e/wait-for-it.sh /wait-for-it.sh + +USER $SERVICE_USER +WORKDIR $SERVICE_ROOT + +# Our entrypoint will pull in our environment variables from Consul and Vault, +# and execute whatever command we provided the container. +# See https://github.com/articulate/docker-bootstrap +ENTRYPOINT [ "dumb-init", "--", "/entrypoint" ] diff --git a/README.md b/README.md index 87dcb13..6736a65 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ Base Node.js Docker images. > 🌟 recommended image +* __articulate/node:26__ 🌟 * __articulate/node:24__ 🌟 * articulate/node:24-lambda * __articulate/node:22__ 🌟