| FROM node:20-alpine AS base |
| ENV PNPM_HOME="/pnpm" |
| ENV PATH="$PNPM_HOME:$PATH" |
|
|
| RUN npm i -g pnpm |
|
|
| FROM base AS build |
| COPY . /usr/src/app |
| WORKDIR /usr/src/app |
|
|
| RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile |
|
|
| RUN pnpm run -r build |
|
|
| RUN pnpm deploy --filter=server --prod /app |
| RUN pnpm deploy --filter=server --prod /app-sqlite |
|
|
| RUN cd /app && pnpm exec prisma generate |
|
|
| RUN cd /app-sqlite && \ |
| rm -rf ./prisma && \ |
| mv prisma-sqlite prisma && \ |
| pnpm exec prisma generate |
|
|
| FROM base AS app-sqlite |
| COPY --from=build /app-sqlite /app |
|
|
| WORKDIR /app |
|
|
| EXPOSE 4000 |
|
|
| ENV NODE_ENV=production |
| ENV HOST="0.0.0.0" |
| ENV SERVER_ORIGIN_URL="" |
| ENV MAX_REQUEST_PER_MINUTE=60 |
| ENV AUTH_CODE="" |
| ENV DATABASE_URL="file:../data/wewe-rss.db" |
| ENV DATABASE_TYPE="sqlite" |
|
|
| RUN chmod +x ./docker-bootstrap.sh |
|
|
| CMD ["./docker-bootstrap.sh"] |
|
|
|
|
| FROM base AS app |
| COPY --from=build /app /app |
|
|
| WORKDIR /app |
|
|
| EXPOSE 4000 |
|
|
| ENV NODE_ENV=production |
| ENV HOST="0.0.0.0" |
| ENV SERVER_ORIGIN_URL="" |
| ENV MAX_REQUEST_PER_MINUTE=60 |
| ENV AUTH_CODE="" |
| ENV DATABASE_URL="" |
|
|
| RUN chmod +x ./docker-bootstrap.sh |
|
|
| CMD ["./docker-bootstrap.sh"] |