From 361262a9da60703de632c655ebcc845ad5fdf81a Mon Sep 17 00:00:00 2001 From: noah Date: Sat, 31 May 2025 13:56:57 +0000 Subject: [PATCH] Update Dockerfile --- Dockerfile | 174 ++++++++++++++++++++++++++--------------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/Dockerfile b/Dockerfile index a1652fb..1026e6b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,87 +1,87 @@ -FROM node:18 AS builder - -WORKDIR /calcom - -ARG NEXT_PUBLIC_LICENSE_CONSENT -ARG NEXT_PUBLIC_WEBSITE_TERMS_URL -ARG NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL -ARG CALCOM_TELEMETRY_DISABLED -ARG DATABASE_URL -ARG NEXTAUTH_SECRET=secret -ARG CALENDSO_ENCRYPTION_KEY=secret -ARG MAX_OLD_SPACE_SIZE=4096 -ARG NEXT_PUBLIC_API_V2_URL - -ENV NEXT_PUBLIC_WEBAPP_URL=http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER \ - NEXT_PUBLIC_API_V2_URL=$NEXT_PUBLIC_API_V2_URL \ - NEXT_PUBLIC_LICENSE_CONSENT=$NEXT_PUBLIC_LICENSE_CONSENT \ - NEXT_PUBLIC_WEBSITE_TERMS_URL=$NEXT_PUBLIC_WEBSITE_TERMS_URL \ - NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL=$NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL \ - CALCOM_TELEMETRY_DISABLED=$CALCOM_TELEMETRY_DISABLED \ - DATABASE_URL=$DATABASE_URL \ - DATABASE_DIRECT_URL=$DATABASE_URL \ - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} \ - CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY} \ - NODE_OPTIONS=--max-old-space-size=${MAX_OLD_SPACE_SIZE} \ - BUILD_STANDALONE=true - -COPY calcom/package.json calcom/yarn.lock calcom/.yarnrc.yml calcom/playwright.config.ts calcom/turbo.json calcom/git-init.sh calcom/git-setup.sh calcom/i18n.json ./ -COPY calcom/.yarn ./.yarn -COPY calcom/apps/web ./apps/web -COPY calcom/apps/api/v2 ./apps/api/v2 -COPY calcom/packages ./packages -COPY calcom/tests ./tests - -RUN yarn config set httpTimeout 1200000 -RUN npx turbo prune --scope=@calcom/web --scope=@calcom/trpc --docker -RUN yarn install -RUN yarn db-deploy -RUN yarn --cwd packages/prisma seed-app-store -# Build and make embed servable from web/public/embed folder -RUN yarn workspace @calcom/trpc run build -RUN yarn --cwd packages/embeds/embed-core workspace @calcom/embed-core run build -RUN yarn --cwd apps/web workspace @calcom/web run build - -# RUN yarn plugin import workspace-tools && \ -# yarn workspaces focus --all --production -RUN rm -rf node_modules/.cache .yarn/cache apps/web/.next/cache - -FROM node:18 AS builder-two - -WORKDIR /calcom -ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 - -ENV NODE_ENV=production - -COPY calcom/package.json calcom/.yarnrc.yml calcom/turbo.json calcom/i18n.json ./ -COPY calcom/.yarn ./.yarn -COPY --from=builder /calcom/yarn.lock ./yarn.lock -COPY --from=builder /calcom/node_modules ./node_modules -COPY --from=builder /calcom/packages ./packages -COPY --from=builder /calcom/apps/web ./apps/web -COPY --from=builder /calcom/packages/prisma/schema.prisma ./prisma/schema.prisma -COPY scripts scripts - -# Save value used during this build stage. If NEXT_PUBLIC_WEBAPP_URL and BUILT_NEXT_PUBLIC_WEBAPP_URL differ at -# run-time, then start.sh will find/replace static values again. -ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \ - BUILT_NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL - -RUN scripts/replace-placeholder.sh http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER ${NEXT_PUBLIC_WEBAPP_URL} - -FROM node:18 AS runner - - -WORKDIR /calcom -COPY --from=builder-two /calcom ./ -ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 -ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \ - BUILT_NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL - -ENV NODE_ENV=production -EXPOSE 3000 - -HEALTHCHECK --interval=30s --timeout=30s --retries=5 \ - CMD wget --spider http://localhost:3000 || exit 1 - -CMD ["/calcom/scripts/start.sh"] +FROM node:18 AS builder + +WORKDIR /calcom + +ARG NEXT_PUBLIC_LICENSE_CONSENT +ARG NEXT_PUBLIC_WEBSITE_TERMS_URL +ARG NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL +ARG CALCOM_TELEMETRY_DISABLED +ARG DATABASE_URL +ARG NEXTAUTH_SECRET=secret +ARG CALENDSO_ENCRYPTION_KEY=secret +ARG MAX_OLD_SPACE_SIZE=4096 +ARG NEXT_PUBLIC_API_V2_URL + +ENV NEXT_PUBLIC_WEBAPP_URL=http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER \ + NEXT_PUBLIC_API_V2_URL=$NEXT_PUBLIC_API_V2_URL \ + NEXT_PUBLIC_LICENSE_CONSENT=$NEXT_PUBLIC_LICENSE_CONSENT \ + NEXT_PUBLIC_WEBSITE_TERMS_URL=$NEXT_PUBLIC_WEBSITE_TERMS_URL \ + NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL=$NEXT_PUBLIC_WEBSITE_PRIVACY_POLICY_URL \ + CALCOM_TELEMETRY_DISABLED=$CALCOM_TELEMETRY_DISABLED \ + DATABASE_URL=$DATABASE_URL \ + DATABASE_DIRECT_URL=$DATABASE_URL \ + NEXTAUTH_SECRET=${NEXTAUTH_SECRET} \ + CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY} \ + NODE_OPTIONS=--max-old-space-size=${MAX_OLD_SPACE_SIZE} \ + BUILD_STANDALONE=true + +COPY calcom/package.json calcom/yarn.lock calcom/.yarnrc.yml calcom/playwright.config.ts calcom/turbo.json calcom/i18n.json ./ +COPY calcom/.yarn ./.yarn +COPY calcom/apps/web ./apps/web +COPY calcom/apps/api/v2 ./apps/api/v2 +COPY calcom/packages ./packages +COPY calcom/tests ./tests + +RUN yarn config set httpTimeout 1200000 +RUN npx turbo prune --scope=@calcom/web --scope=@calcom/trpc --docker +RUN yarn install +RUN yarn db-deploy +RUN yarn --cwd packages/prisma seed-app-store +# Build and make embed servable from web/public/embed folder +RUN yarn workspace @calcom/trpc run build +RUN yarn --cwd packages/embeds/embed-core workspace @calcom/embed-core run build +RUN yarn --cwd apps/web workspace @calcom/web run build + +# RUN yarn plugin import workspace-tools && \ +# yarn workspaces focus --all --production +RUN rm -rf node_modules/.cache .yarn/cache apps/web/.next/cache + +FROM node:18 AS builder-two + +WORKDIR /calcom +ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 + +ENV NODE_ENV=production + +COPY calcom/package.json calcom/.yarnrc.yml calcom/turbo.json calcom/i18n.json ./ +COPY calcom/.yarn ./.yarn +COPY --from=builder /calcom/yarn.lock ./yarn.lock +COPY --from=builder /calcom/node_modules ./node_modules +COPY --from=builder /calcom/packages ./packages +COPY --from=builder /calcom/apps/web ./apps/web +COPY --from=builder /calcom/packages/prisma/schema.prisma ./prisma/schema.prisma +COPY scripts scripts + +# Save value used during this build stage. If NEXT_PUBLIC_WEBAPP_URL and BUILT_NEXT_PUBLIC_WEBAPP_URL differ at +# run-time, then start.sh will find/replace static values again. +ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \ + BUILT_NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL + +RUN scripts/replace-placeholder.sh http://NEXT_PUBLIC_WEBAPP_URL_PLACEHOLDER ${NEXT_PUBLIC_WEBAPP_URL} + +FROM node:18 AS runner + + +WORKDIR /calcom +COPY --from=builder-two /calcom ./ +ARG NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 +ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \ + BUILT_NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL + +ENV NODE_ENV=production +EXPOSE 3000 + +HEALTHCHECK --interval=30s --timeout=30s --retries=5 \ + CMD wget --spider http://localhost:3000 || exit 1 + +CMD ["/calcom/scripts/start.sh"]