Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions 4.0/base/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# tags=articulate/ruby:4.0
# syntax=docker/dockerfile:1
FROM ruby:4.0-slim-trixie

ENV SERVICE_ROOT=/service SERVICE_USER=service SERVICE_UID=1001

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
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 && /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 \
# 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" ]
42 changes: 42 additions & 0 deletions 4.0/node/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# tags=articulate/ruby:4.0-node
# syntax=docker/dockerfile:1
FROM ruby:4.0-slim-trixie

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
ADD --chmod=644 https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem /usr/local/share/ca-certificates/aws-rds-global-bundle.pem

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN install_packages make dumb-init && /tmp/awscli.sh && rm /tmp/awscli.sh \
# Install Node.js
&& install_packages curl gnupg \
&& 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_24.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
&& install_packages nodejs \
&& apt-get remove -y curl gnupg \
# 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 \
# 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" ]
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ Base Ruby images for Articulate services.

> 🌟 recommended image

* __articulate/ruby:4.0__ 🌟
* __articulate/ruby:4.0-node__ 🌟
* __articulate/ruby:3.4__ 🌟
* __articulate/ruby:3.4-node__ 🌟
* articulate/ruby:3.3
Expand Down