2024-06-05 23:04:52 +00:00
|
|
|
## build runner
|
2024-06-08 16:08:41 +00:00
|
|
|
FROM node:20-slim as build-runner
|
|
|
|
|
|
|
|
ENV PNPM_HOME="/pnpm"
|
|
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
|
|
RUN corepack enable
|
2024-06-05 23:04:52 +00:00
|
|
|
|
|
|
|
# Set temp directory
|
|
|
|
WORKDIR /tmp/app
|
|
|
|
|
|
|
|
# Move package.json
|
|
|
|
COPY package.json .
|
|
|
|
|
|
|
|
# Install dependencies
|
2024-06-08 16:08:41 +00:00
|
|
|
RUN pnpm install
|
2024-06-05 23:04:52 +00:00
|
|
|
|
|
|
|
# Move source files
|
|
|
|
COPY src ./src
|
|
|
|
COPY tsconfig.json .
|
2024-06-08 16:08:41 +00:00
|
|
|
COPY tsup.config.ts .
|
2024-06-05 23:04:52 +00:00
|
|
|
|
|
|
|
# Build project
|
2024-06-08 16:08:41 +00:00
|
|
|
RUN pnpm build
|
2024-06-05 23:04:52 +00:00
|
|
|
|
|
|
|
## production runner
|
2024-06-08 16:08:41 +00:00
|
|
|
FROM node:20-slim as prod-runner
|
|
|
|
|
|
|
|
ENV PNPM_HOME="/pnpm"
|
|
|
|
ENV PATH="$PNPM_HOME:$PATH"
|
|
|
|
RUN corepack enable
|
2024-08-05 20:27:01 +00:00
|
|
|
RUN apt-get update -y && apt-get install -y openssl
|
2024-06-05 23:04:52 +00:00
|
|
|
|
|
|
|
# Set work directory
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
# Copy package.json from build-runner
|
|
|
|
COPY --from=build-runner /tmp/app/package.json /app/package.json
|
2024-08-05 20:27:01 +00:00
|
|
|
COPY prisma .
|
|
|
|
COPY .env .
|
2024-06-05 23:04:52 +00:00
|
|
|
|
|
|
|
# Install dependencies
|
2024-06-08 16:08:41 +00:00
|
|
|
RUN pnpm install --prod
|
2024-08-05 20:27:01 +00:00
|
|
|
RUN npx prisma migrate deploy
|
2024-06-05 23:04:52 +00:00
|
|
|
|
|
|
|
# Move build files
|
|
|
|
COPY --from=build-runner /tmp/app/build /app/build
|
|
|
|
|
|
|
|
# Start bot
|
2024-06-08 16:08:41 +00:00
|
|
|
CMD [ "pnpm", "start" ]
|