Dockerfile
Rama develop · réplica de lectura del repositorio original.
ARG NODE_VERSION="jod"
ARG ALPINE_VERSION="3.24"
ARG BUN_VERSION="1.4.4"
FROM oven/bun:${BUN_VERSION}-alpine AS bun_base
FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS node_base
# ---- BUILDER BASE ----
FROM bun_base AS builder_base
WORKDIR /deps
ARG TARGETARCH
# renovate: datasource=github-releases depName=docker/compose
ARG DOCKER_COMPOSE_VERSION="v5.6.1"
ENV TARGETARCH=${TARGETARCH}
RUN apk add --no-cache curl python3 make g++ git
RUN echo "Building for ${TARGETARCH}"
RUN if [ "${TARGETARCH}" = "arm64" ]; then \
curl -L -o docker-binary "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-linux-aarch64"; \
elif [ "${TARGETARCH}" = "amd64" ]; then \
curl -L -o docker-binary "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-linux-x86_64"; \
fi
RUN chmod +x docker-binary
# ---- RUNNER BASE ----
FROM node_base AS runner_base
RUN apk add --no-cache curl openssl git tar pigz file docker-cli-buildx
# ---- BUILDER ----
FROM builder_base AS builder
ARG TIPI_VERSION
ARG LOCAL
ENV SENTRY_RELEASE=${TIPI_VERSION}
WORKDIR /app
COPY ./bun.lock ./
COPY ./package.json ./
COPY ./packages/backend/package.json ./packages/backend/package.json
COPY ./packages/frontend/package.json ./packages/frontend/package.json
COPY ./packages/common/package.json ./packages/common/package.json
COPY ./packages/frontend/scripts ./packages/frontend/scripts
COPY ./packages/frontend/public ./packages/frontend/public
RUN bun install --frozen-lockfile --verbose
COPY ./turbo.json ./turbo.json
COPY ./packages ./packages
RUN bun run build
RUN echo "TIPI_VERSION: ${SENTRY_RELEASE}"
RUN echo "LOCAL: ${LOCAL}"
RUN bun run bundle
RUN --mount=type=secret,id=sentry_token,env=SENTRY_AUTH_TOKEN if [ "${LOCAL}" != "true" ]; then \
cd ./packages/backend && \
bun run sentry:sourcemaps; \
fi
# ---- RUNNER ----
FROM runner_base AS runner
ENV NODE_ENV="production"
WORKDIR /app
RUN npm install --no-save --omit=dev argon2@0.45.1 class-transformer@0.5.1
COPY --from=builder_base /deps/docker-binary /usr/local/bin/docker-compose
COPY --from=builder /app/package.json ./
COPY --from=builder /app/packages/backend/dist ./
# Assets
COPY --from=builder /app/packages/backend/assets ./assets
COPY --from=builder /app/packages/backend/src/core/database/drizzle ./assets/migrations
COPY --from=builder /app/packages/backend/src/modules/i18n/translations ./assets/translations
COPY --from=builder /app/packages/frontend/dist/client ./assets/frontend
EXPOSE 3000
RUN mv main.js main.mjs
CMD ["node", "./main.mjs"]