pastefile1
@@ -0,0 +1,60 @@
+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"]
\ No newline at end of file