FROM node:22-alpine as twenty-website-build WORKDIR /app COPY ./package.json . COPY ./yarn.lock . COPY ./.yarnrc.yml . COPY ./.yarn/releases /app/.yarn/releases COPY ./tools/eslint-rules /app/tools/eslint-rules COPY ./packages/twenty-ui/package.json /app/packages/twenty-ui/ COPY ./packages/twenty-shared/package.json /app/packages/twenty-shared/ COPY ./packages/twenty-website/package.json /app/packages/twenty-website/package.json RUN yarn ENV KEYSTATIC_GITHUB_CLIENT_ID="" ENV KEYSTATIC_GITHUB_CLIENT_SECRET="" ENV KEYSTATIC_SECRET="" ENV NEXT_PUBLIC_KEYSTATIC_GITHUB_APP_SLUG="" COPY ./packages/twenty-ui /app/packages/twenty-ui COPY ./packages/twenty-website /app/packages/twenty-website RUN npx nx build twenty-website FROM node:22-alpine as twenty-website WORKDIR /app/packages/twenty-website COPY --from=twenty-website-build /app /app WORKDIR /app/packages/twenty-website LABEL org.opencontainers.image.source=https://github.com/twentyhq/twenty LABEL org.opencontainers.image.description="This image provides a consistent and reproducible environment for the website." RUN chown -R 1000 /app # Use non root user with uid 1000 USER 1000 CMD ["/bin/sh", "-c", "npx nx start"]