Add support for a new SENTRY_RELEASE and SENTRY_ENVIRONMENT env. It is optional and allows to init sentry with a Release version and an env (used internally at Twenty). Docker image have been updated do intergrate the new env as an Argument
80 lines
2.8 KiB
Docker
80 lines
2.8 KiB
Docker
# Base image for common dependencies
|
|
FROM node:18.17.1-alpine as common-deps
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy only the necessary files for dependency resolution
|
|
COPY ./package.json ./yarn.lock ./.yarnrc.yml ./tsconfig.base.json ./nx.json /app/
|
|
COPY ./.yarn/releases /app/.yarn/releases
|
|
|
|
COPY ./packages/twenty-emails/package.json /app/packages/twenty-emails/
|
|
COPY ./packages/twenty-server/package.json /app/packages/twenty-server/
|
|
COPY ./packages/twenty-server/patches /app/packages/twenty-server/patches
|
|
COPY ./packages/twenty-ui/package.json /app/packages/twenty-ui/
|
|
COPY ./packages/twenty-front/package.json /app/packages/twenty-front/
|
|
|
|
# Install all dependencies
|
|
RUN yarn && yarn cache clean && npx nx reset
|
|
|
|
|
|
# Build the back
|
|
FROM common-deps as twenty-server-build
|
|
|
|
# Copy sourcecode after installing dependences to accelerate subsequents builds
|
|
COPY ./packages/twenty-emails /app/packages/twenty-emails
|
|
COPY ./packages/twenty-server /app/packages/twenty-server
|
|
|
|
RUN npx nx run twenty-server:build
|
|
RUN mv /app/packages/twenty-server/dist /app/packages/twenty-server/build
|
|
RUN npx nx run twenty-server:build:packageJson
|
|
RUN mv /app/packages/twenty-server/dist/package.json /app/packages/twenty-server/package.json
|
|
RUN rm -rf /app/packages/twenty-server/dist
|
|
RUN mv /app/packages/twenty-server/build /app/packages/twenty-server/dist
|
|
|
|
RUN yarn workspaces focus --production twenty-emails twenty-server
|
|
|
|
|
|
# Build the front
|
|
FROM common-deps as twenty-front-build
|
|
|
|
ARG REACT_APP_SERVER_BASE_URL
|
|
|
|
COPY ./packages/twenty-front /app/packages/twenty-front
|
|
COPY ./packages/twenty-ui /app/packages/twenty-ui
|
|
RUN yarn nx build twenty-front
|
|
|
|
|
|
# Final stage: Run the application
|
|
FROM node:18.17.1-alpine as twenty
|
|
|
|
# Used to run healthcheck in docker
|
|
RUN apk add --no-cache curl jq
|
|
|
|
COPY ./packages/twenty-docker/twenty/entrypoint.sh /app/entrypoint.sh
|
|
RUN chmod +x /app/entrypoint.sh
|
|
|
|
WORKDIR /app/packages/twenty-server
|
|
|
|
ARG REACT_APP_SERVER_BASE_URL
|
|
ENV REACT_APP_SERVER_BASE_URL $REACT_APP_SERVER_BASE_URL
|
|
ARG SENTRY_RELEASE
|
|
ENV SENTRY_RELEASE $SENTRY_RELEASE
|
|
|
|
# Copy built applications from previous stages
|
|
COPY --chown=1000 --from=twenty-server-build /app /app
|
|
COPY --chown=1000 --from=twenty-server-build /app/packages/twenty-server /app/packages/twenty-server
|
|
COPY --chown=1000 --from=twenty-front-build /app/packages/twenty-front/build /app/packages/twenty-server/dist/front
|
|
|
|
# Set metadata and labels
|
|
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 backend and frontend, ensuring it deploys faster and runs the same way regardless of the deployment environment."
|
|
|
|
RUN mkdir /app/.local-storage
|
|
RUN chown -R 1000 /app
|
|
|
|
# Use non root user with uid 1000
|
|
USER 1000
|
|
|
|
CMD ["node", "dist/src/main"]
|
|
ENTRYPOINT ["/app/entrypoint.sh"]
|