ToolJet/docker/cloud/cloud-server.Dockerfile
Midhun G S 90e7c4cab9
Cloud licensing related changes (#13033)
* added all pending cloud migration

* restrict cloud migrations

* added cloud data-migrations

* Added cloud entities

* keep tables across all

* cloud licensing initial changes

* fix

* payments module

* license counts updates

* update

* Added all pending cloud migration to pre-release + Payments module (#13006)

* added all pending cloud migration

* restrict cloud migrations

* added cloud data-migrations

* Added cloud entities

* keep tables across all

* payments module

* license counts updates

* update

* migration fixes

* pass orgId

* movement

* added cloud instance settings

* org id to license terms

* before merge

* dockerfile changes for cloud

* migration fixes

* subscription

* merge main

* posthog-js package

* fix

* selhostcustomer migration timestamp update

* fix

* fixes

* fix

* fix

* Adding cloud dockerfile changes

* migration fix

* fix

* fix

* fix

* fixes

* added migration progress

* fix

* added migration files for cloud

* fix

* added migrations for cloud

* add organizationId for pages controller

* fixes for plugins script

* fix

* final

* added cloud licensing envs

* UI WRAPPER BUG

* fix

* orgId groups fix

* lint check fixes

* Refactor Dockerfiles to use dynamic branch names for builds

* Feature/promote release permission management (#13020)

* migration and entity changes

* removed extra migration

* added default group permissions

* basic ui changes

* added promote and release permissions

* fixed tooltips for promote and release buttons

* fix

* fixed app promote ability check

* ce compatibility ui change

* ui fixes

* removed console.log

* removed comments

* updated ee-preview.Dockerile

* using base img node:22.15.1-bullseye

* fix for ce render

* Update ce-preview.Dockerfile

* Update ee-preview.Dockerfile

* ui fix

* fix

* fixes

* fixes

* fixes

* fixes

* minor fixes

* fix

---------

Co-authored-by: Souvik <psouvik260@gmail.com>
Co-authored-by: Adish M <44204658+adishM98@users.noreply.github.com>

* Bugfix/git sync pre release (#13098)

* bugfixes

* ui fixes for disabled states in version creation

* minor fixes

* removed unused imports

* fixes

* removed comments

* module file fixes

* module fixes

* white-labelling fixes

* login-configs

* fix for migration for ce

* Fix for app count guard (#13131)

* fix for app count guard

* added check

* for debug

* license key

* Modules : Platform Functionality  (#12994)

* init

* mod

* app import-export

* licensing and UI

* review and permissions

* update

* updates

* update

* update

* fix breadcrumb

* fix app builder error

* remove launch button for modules

* fixed homepage

* fix permission check

---------

Co-authored-by: platform-ops123 <platformops545@gmail.com>
Co-authored-by: gsmithun4 <gsmithun4@gmail.com>

* reverted logs

* tjdb guard and dark mode (#13137)

* ui fixes

* added modules module

* removed unused imports

* fix

* fix

* Cypress fix

* fixes for cloud instance level licensing (#13146)

---------

Co-authored-by: platform-ops123 <platformops545@gmail.com>
Co-authored-by: Rudra deep Biswas <rudra21ultra@gmail.com>
Co-authored-by: Adish M <adish.madhu@gmail.com>
Co-authored-by: Rudhra Deep Biswas <98055396+rudeUltra@users.noreply.github.com>
Co-authored-by: Vijaykant Yadav <vjy239@gmail.com>
Co-authored-by: Rohan Lahori <64496391+rohanlahori@users.noreply.github.com>
Co-authored-by: Souvik <psouvik260@gmail.com>
Co-authored-by: Adish M <44204658+adishM98@users.noreply.github.com>
Co-authored-by: rohanlahori <rohanlahori99@gmail.com>
Co-authored-by: ajith-k-v <ajith.jaban@gmail.com>
2025-07-02 10:57:36 +05:30

137 lines
5.1 KiB
Docker

FROM node:22.15.1 AS builder
# Fix for JS heap limit allocation issue
ENV NODE_OPTIONS="--max-old-space-size=4096"
RUN npm i -g npm@10.9.2
RUN npm cache clean --force
RUN npm install -g @nestjs/cli
RUN mkdir -p /app
WORKDIR /app
# Set GitHub token and branch as build arguments
ARG CUSTOM_GITHUB_TOKEN
ARG BRANCH_NAME
# Clone and checkout the frontend repository
RUN git config --global url."https://x-access-token:${CUSTOM_GITHUB_TOKEN}@github.com/".insteadOf "https://github.com/"
RUN git config --global http.version HTTP/1.1
RUN git config --global http.postBuffer 524288000
RUN git clone https://github.com/ToolJet/ToolJet.git .
# The branch name needs to be changed the branch with modularisation in CE repo
RUN git checkout ${BRANCH_NAME}
RUN git submodule update --init --recursive
# Checkout the same branch in submodules if it exists, otherwise stay on default branch
RUN git submodule foreach 'git checkout ${BRANCH_NAME} || true'
COPY ./package.json ./package.json
# Building ToolJet plugins
COPY ./plugins/package.json ./plugins/package-lock.json ./plugins/
RUN npm --prefix plugins install
COPY ./plugins/ ./plugins/
ENV NODE_ENV=production
RUN npm --prefix plugins run build
RUN npm --prefix plugins prune --production
ENV TOOLJET_EDITION=cloud
ENV NODE_ENV=production
# Building ToolJet server
COPY ./server/package.json ./server/package-lock.json ./server/
RUN npm --prefix server install --only=production
COPY ./server/ ./server/
RUN npm --prefix server run build
FROM debian:12
RUN apt-get update -yq \
&& apt-get install curl gnupg zip -yq \
&& apt-get install -yq build-essential \
&& apt-get clean -y
RUN curl -O https://nodejs.org/dist/v22.15.1/node-v22.15.1-linux-x64.tar.xz \
&& tar -xf node-v22.15.1-linux-x64.tar.xz \
&& mv node-v22.15.1-linux-x64 /usr/local/lib/nodejs \
&& echo 'export PATH="/usr/local/lib/nodejs/bin:$PATH"' >> /etc/profile.d/nodejs.sh \
&& /bin/bash -c "source /etc/profile.d/nodejs.sh" \
&& rm node-v22.15.1-linux-x64.tar.xz
ENV PATH=/usr/local/lib/nodejs/bin:$PATH
ENV NODE_ENV=production
ENV TOOLJET_EDITION=cloud
ENV NODE_OPTIONS="--max-old-space-size=4096"
RUN apt-get update && apt-get install -y postgresql-client freetds-dev libaio1 wget
# Install Instantclient Basic Light Oracle and Dependencies
WORKDIR /opt/oracle
RUN wget https://tooljet-plugins-production.s3.us-east-2.amazonaws.com/marketplace-assets/oracledb/instantclients/instantclient-basiclite-linuxx64.zip && \
wget https://tooljet-plugins-production.s3.us-east-2.amazonaws.com/marketplace-assets/oracledb/instantclients/instantclient-basiclite-linux.x64-11.2.0.4.0.zip && \
unzip instantclient-basiclite-linuxx64.zip && rm -f instantclient-basiclite-linuxx64.zip && \
unzip instantclient-basiclite-linux.x64-11.2.0.4.0.zip && rm -f instantclient-basiclite-linux.x64-11.2.0.4.0.zip && \
cd /opt/oracle/instantclient_21_10 && rm -f *jdbc* *occi* *mysql* *mql1* *ipc1* *jar uidrvci genezi adrci && \
cd /opt/oracle/instantclient_11_2 && rm -f *jdbc* *occi* *mysql* *mql1* *ipc1* *jar uidrvci genezi adrci && \
echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig
# Set the Instant Client library paths
ENV LD_LIBRARY_PATH="/opt/oracle/instantclient_11_2:/opt/oracle/instantclient_21_10:${LD_LIBRARY_PATH}"
WORKDIR /
RUN mkdir -p /app
# copy npm scripts
COPY --from=builder /app/package.json ./app/package.json
# copy plugins dependencies
COPY --from=builder /app/plugins/dist ./app/plugins/dist
COPY --from=builder /app/plugins/client.js ./app/plugins/client.js
COPY --from=builder /app/plugins/node_modules ./app/plugins/node_modules
COPY --from=builder /app/plugins/packages/common ./app/plugins/packages/common
COPY --from=builder /app/plugins/package.json ./app/plugins/package.json
# copy server build
COPY --from=builder /app/server/package.json ./app/server/package.json
COPY --from=builder /app/server/.version ./app/server/.version
COPY --from=builder /app/server/keys ./app/server/keys
COPY --from=builder /app/server/node_modules ./app/server/node_modules
COPY --from=builder /app/server/templates ./app/server/templates
COPY --from=builder /app/server/scripts ./app/server/scripts
COPY --from=builder /app/server/dist ./app/server/dist
COPY --from=builder /app/server/src/assets ./app/server/src/assets
COPY ./docker/cloud/cloud-entrypoint.sh ./app/server/cloud-entrypoint.sh
# Define non-sudo user
RUN useradd --create-home --home-dir /home/appuser appuser \
&& chown -R appuser:0 /app \
&& chown -R appuser:0 /home/appuser \
&& chmod u+x /app \
&& chmod -R g=u /app
RUN mkdir -p /home/appuser/.npm/_cacache \
mkdir -p /home/appuser/.npm_cache_tmp \
mkdir -p /home/appuser/.npm/_logs \
&& chown -R appuser:0 /home/appuser/.npm \
&& chmod g+s /home/appuser/.npm_cache_tmp
# Set npm cache directory
RUN npm config set cache /tmp/npm-cache --global
ENV npm_config_cache /tmp/npm-cache
ENV HOME=/home/appuser
# Switch back to appuser
USER appuser
WORKDIR /app
# Dependencies for scripts outside nestjs
RUN npm install dotenv@10.0.0 joi@17.4.1
RUN npm cache clean --force
ENTRYPOINT ["./server/cloud-entrypoint.sh"]