45 lines
1.4 KiB
Docker
45 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=pay --docker
|
|
|
|
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=pay
|
|
|
|
FROM node:18-alpine AS deployer-cloudflare
|
|
WORKDIR /app
|
|
RUN npm install --global wrangler
|
|
COPY --link --from=builder-cloudflare /app/apps/pay/dist /app/dist
|
|
ARG GIT_BRANCH="main" \
|
|
GIT_COMMIT="" \
|
|
CF_PAGES_PROJECT="pay-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=pay
|
|
|
|
FROM node:18-alpine AS runner-nodejs
|
|
WORKDIR /app
|
|
COPY --from=builder-nodejs /app/apps/pay/.output /app
|
|
EXPOSE 3000
|
|
CMD [ "node", "./server/index.mjs" ] |