chore: sync Dockerfile with reference and fix GHCR name-canonical

This commit is contained in:
Rodrigo Borba 2026-02-25 16:18:51 -03:00
parent 6d48b7d311
commit 3018ff04c1
2 changed files with 24 additions and 47 deletions

View File

@ -70,7 +70,7 @@ jobs:
NODE_ENV=production
# Publica por digest e deixa o merge job criar a tag multi-arch final
outputs: type=image,name=${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
outputs: type=image,name=${{ env.IMAGE_NAME }},push-by-digest=true,push=true
# Cache em dois níveis:
# 1) GHA por branch+arquitetura (hit rápido no fluxo atual)

View File

@ -1,57 +1,33 @@
# pre-build stage
FROM node:24-alpine as node
FROM node:23-alpine as node
FROM ruby:3.4.4-alpine3.21 AS pre-builder
ARG NODE_VERSION="24.13.0"
ARG PNPM_VERSION="10.2.0"
ENV NODE_VERSION=${NODE_VERSION}
ENV PNPM_VERSION=${PNPM_VERSION}
# ARG default to production settings
# For development docker-compose file overrides ARGS
ARG BUNDLE_WITHOUT="development:test"
ENV BUNDLE_WITHOUT ${BUNDLE_WITHOUT}
ENV BUNDLER_VERSION=2.5.16
ARG RAILS_SERVE_STATIC_FILES=true
ENV RAILS_SERVE_STATIC_FILES ${RAILS_SERVE_STATIC_FILES}
ARG RAILS_ENV=production
ENV RAILS_ENV ${RAILS_ENV}
ARG NODE_OPTIONS="--max-old-space-size=4096 --openssl-legacy-provider"
ENV NODE_OPTIONS ${NODE_OPTIONS}
ENV BUNDLE_PATH="/gems"
RUN apk update && apk add --no-cache \
openssl \
tar \
build-base \
tzdata \
postgresql-dev \
postgresql-client \
git \
curl \
xz \
&& mkdir -p /var/app \
&& gem install bundler -v "$BUNDLER_VERSION"
COPY --from=node /usr/local/bin/node /usr/local/bin/
# install node
COPY --from=node /usr/local/bin/node /usr/local/bin/node
COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \
COPY --from=node /usr/local/include/node /usr/local/include/node
RUN ln -s /usr/local/bin/node /usr/local/bin/nodejs \
&& ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \
&& ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx
RUN apk add --no-cache \
build-base \
git \
nodejs \
npm \
tzdata \
shared-mime-info \
vips-dev
WORKDIR /app
COPY package.json pnpm-lock.yaml .pnpm-file.cjs ./
RUN npm install -g pnpm@${PNPM_VERSION}
RUN echo 'export PNPM_HOME="/root/.local/share/pnpm"' >> /root/.shrc \
&& echo 'export PATH="$PNPM_HOME:$PATH"' >> /root/.shrc \
&& export PNPM_HOME="/root/.local/share/pnpm" \
&& export PATH="$PNPM_HOME:$PATH" \
&& pnpm --version
# Persist the environment variables in Docker
ENV PNPM_HOME="/root/.local/share/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
WORKDIR /app
@ -71,8 +47,9 @@ RUN if [ "$RAILS_ENV" = "production" ]; then \
else bundle install -j 4 -r 3; \
fi
COPY package.json pnpm-lock.yaml ./
RUN pnpm i
COPY package.json pnpm-lock.yaml .pnpm-file.cjs ./
RUN pnpm config set store-dir /pnpm/store
RUN --mount=type=cache,target=/pnpm/store pnpm i --frozen-lockfile
COPY . /app