Files
Kotyata/Dockerfile.client
2026-03-17 13:24:22 +03:00

46 lines
1.4 KiB
Docker

FROM node:18-alpine AS base
WORKDIR /app
RUN yarn global add turbo@1.5.5
FROM base AS pruner
COPY . .
RUN test -f package.json
RUN turbo prune --scope=client --docker
# Add lockfile and package.json's of isolated subworkspace
FROM base AS deps
COPY --link --from=pruner /app/out/json/ .
COPY --link --from=pruner /app/out/yarn.lock ./yarn.lock
RUN yarn install --frozen-lockfile
COPY --from=pruner /app/out/full .
FROM deps AS builder-cloudflare
ENV NITRO_PRESET=cloudflare-pages
RUN turbo run build --scope=client
FROM node:18-alpine AS deployer-cloudflare
WORKDIR /app
RUN npm install --global wrangler
COPY --link --from=builder-cloudflare /app/apps/client/dist /app/dist
ARG GIT_BRANCH="main" \
GIT_COMMIT="" \
CF_PAGES_PROJECT="app-prgms-io"
RUN --mount=type=secret,id=cloudflare-account-id,target=/kaniko/cloudflare-account-id \
--mount=type=secret,id=cloudflare-api-token,target=/kaniko/cloudflare-api-token \
CLOUDFLARE_ACCOUNT_ID=$(cat /kaniko/cloudflare-account-id) \
CLOUDFLARE_API_TOKEN=$(cat /kaniko/cloudflare-api-token) \
wrangler pages deploy \
--project-name "${CF_PAGES_PROJECT}" \
--branch "${GIT_BRANCH}" \
--commit-hash "${GIT_COMMIT}" \
dist
FROM deps AS builder-nodejs
ENV NITRO_PRESET=node-server
RUN turbo run build --scope=client
FROM node:18-alpine AS runner-nodejs
WORKDIR /app
COPY --from=builder-nodejs /app/apps/client/.output /app
EXPOSE 3000
CMD [ "node", "./server/index.mjs" ]