Dockerfile

fly.io main docker file

unlisted ⁨1⁩ ⁨file⁩ 2025-01-08 23:31:39 UTC

pastefile1

Raw
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"]