33
44# Make sure RUBY_VERSION matches the Ruby version in .ruby-version
55ARG RUBY_VERSION=4.0.1
6- FROM ruby:$RUBY_VERSION-slim AS base
6+ FROM ruby:$RUBY_VERSION-alpine AS base
77
88LABEL fly_launch_runtime="rails"
99
@@ -15,9 +15,7 @@ RUN gem update --system --no-document && \
1515 gem install -N bundler
1616
1717# Install base packages
18- RUN apt-get update -qq && \
19- apt-get install --no-install-recommends -y curl libjemalloc2 postgresql-client && \
20- rm -rf /var/lib/apt/lists /var/cache/apt/archives
18+ RUN apk add --no-cache curl jemalloc postgresql-client tzdata
2119
2220# Set production environment
2321ENV BUNDLE_DEPLOYMENT="1" \
@@ -30,19 +28,18 @@ ENV BUNDLE_DEPLOYMENT="1" \
3028FROM base AS prebuild
3129
3230# Install packages needed to build gems and node modules
33- RUN apt-get update -qq && \
34- apt-get install --no-install-recommends -y build-essential git libpq-dev libyaml-dev node-gyp pkg-config python-is-python3 && \
35- rm -rf /var/lib/apt/lists /var/cache/apt/archives
31+ RUN apk add --no-cache build-base git gyp libpq-dev pkgconfig python3 yaml-dev
3632
3733
3834FROM prebuild AS node
3935
4036# Install Node.js
4137ARG NODE_VERSION=24.14.0
4238ENV PATH=/usr/local/node/bin:$PATH
43- RUN curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz -C /tmp/ && \
44- /tmp/node-build-master/bin/node-build "${NODE_VERSION}" /usr/local/node && \
45- rm -rf /tmp/node-build-master
39+ RUN curl -sL https://unofficial-builds.nodejs.org/download/release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64-musl.tar.gz | tar xz -C /tmp/ && \
40+ mkdir /usr/local/node && \
41+ cp -rp /tmp/node-v${NODE_VERSION}-linux-x64-musl/* /usr/local/node/ && \
42+ rm -rf /tmp/node-v${NODE_VERSION}-linux-x64-musl
4643
4744# Install node modules
4845COPY package.json ./
@@ -79,17 +76,15 @@ RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile
7976FROM base
8077
8178# Install packages needed for deployment
82- RUN apt-get update -qq && \
83- apt-get install --no-install-recommends -y gzip && \
84- rm -rf /var/lib/apt/lists /var/cache/apt/archives
79+ RUN apk add --no-cache gzip libpq
8580
8681# Copy built artifacts: gems, application
8782COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}"
8883COPY --from=build /rails /rails
8984
9085# Run and own only the runtime files as a non-root user for security
91- RUN groupadd --system --gid 1000 rails && \
92- useradd rails --uid 1000 --gid 1000 --create- home --shell /bin/bash && \
86+ RUN addgroup --system --gid 1000 rails && \
87+ adduser --system rails --uid 1000 --ingroup rails --home /home/rails --shell /bin/sh rails && \
9388 chown -R 1000:1000 db log tmp
9489USER 1000:1000
9590
0 commit comments