# PocketBase Stage FROM alpine:latest as pocketbase ARG PB_VERSION=0.20.5 RUN apk add --no-cache \ unzip \ ca-certificates # download and unzip PocketBase ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_amd64.zip /tmp/pb.zip RUN unzip /tmp/pb.zip -d /pb/ # Uncomment if you want to add migrations and hooks # COPY ./pb_migrations /pb/pb_migrations # COPY ./pb_hooks /pb/pb_hooks EXPOSE 8080 # Node Stage FROM node:20-slim AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable COPY . /app WORKDIR /app FROM base AS prod-deps RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile FROM base AS build RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile RUN pnpm run build # Final Stage FROM pocketbase # Copy built Node application to a directory in the PocketBase image COPY --from=build /app/dist /pb/pb_public # Start PocketBase CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8080"]