pastefile1
FROM flyio/flyctl:latest as flyio
FROM node:20-alpine AS dependencies-env
# Set production environment
ARG SENTRY_AUTH_TOKEN
ARG TURSO_DATABASE_URL
ARG TURSO_AUTH_TOKEN
ENV SENTRY_AUTH_TOKEN $SENTRY_AUTH_TOKEN
ENV TURSO_DATABASE_URL $TURSO_DATABASE_URL
ENV TURSO_AUTH_TOKEN $TURSO_AUTH_TOKEN
RUN npm i -g pnpm
RUN --mount=type=secret,id=ALL_SECRETS \
eval "$(base64 -d /run/secrets/ALL_SECRETS)" && \
echo "Using secrets during build! ==>" && \
echo "Mounted secrets: $ALL_SECRETS"
COPY . /app
FROM dependencies-env AS development-dependencies-env
COPY ./package.json pnpm-lock.yaml /app/
WORKDIR /app
RUN pnpm i --frozen-lockfile
FROM dependencies-env AS production-dependencies-env
COPY ./package.json pnpm-lock.yaml /app/
WORKDIR /app
RUN pnpm i --prod --frozen-lockfile
FROM dependencies-env AS build-env
# Mount the secrets and set them as environment variables
# RUN --mount=type=secret,id=SENTRY_AUTH_TOKEN \
# --mount=type=secret,id=SENTRY_DSN \
# --mount=type=secret,id=TURSO_DATABASE_URL \
# --mount=type=secret,id=TURSO_AUTH_TOKEN \
# export TURSO_DATABASE_URL=$(cat /run/secrets/TURSO_DATABASE_URL) && \
# export TURSO_AUTH_TOKEN=$(cat /run/secrets/TURSO_AUTH_TOKEN) && \
# export SENTRY_AUTH_TOKEN=$(cat /run/secrets/SENTRY_AUTH_TOKEN) && \
# export SENTRY_DSN=$(cat /run/secrets/SENTRY_DSN) && \
# echo "SENTRY_DSN=$SENTRY_DSN" && \
# echo "TURSO_DATABASE_URL=$TURSO_DATABASE_URL" && \
# echo "TURSO_AUTH_TOKEN=$TURSO_AUTH_TOKEN" && \
# echo "SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN"
# WORKDIR /app
# Build stage
COPY ./package.json pnpm-lock.yaml /app/
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
WORKDIR /app
RUN pnpm build
FROM dependencies-env
COPY ./package.json pnpm-lock.yaml /app/
COPY --from=production-dependencies-env /app/node_modules /app/node_modules
COPY --from=build-env /app/build /app/build
WORKDIR /app
CMD ["pnpm", "start"]