mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-21 21:47:17 +00:00
* Added configs to select plugins * moving the configs to * removing private from common * fix * removed if-env * Fix * docker compose changes * review comments * remove plugin build file * revert docker file changes * netlify changes * netlify configs * build script changes * build script changes * dockerfile changes * add prebuild script
68 lines
2.4 KiB
Docker
68 lines
2.4 KiB
Docker
FROM node:14.17.3-buster AS builder
|
|
|
|
# Fix for JS heap limit allocation issue
|
|
ENV NODE_OPTIONS="--max-old-space-size=4096"
|
|
|
|
RUN npm i -g npm@7.20.0
|
|
RUN mkdir -p /app
|
|
|
|
WORKDIR /app
|
|
|
|
# Scripts for building
|
|
COPY ./package.json ./package.json
|
|
|
|
# Build 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
|
|
|
|
# Build frontend
|
|
COPY ./frontend/package.json ./frontend/package-lock.json ./frontend/
|
|
RUN npm --prefix frontend install
|
|
COPY ./frontend/ ./frontend/
|
|
RUN npm --prefix frontend run build
|
|
|
|
# Build server
|
|
COPY ./server/package.json ./server/package-lock.json ./server/
|
|
RUN npm --prefix server install
|
|
COPY ./server/ ./server/
|
|
RUN npm install -g @nestjs/cli
|
|
RUN npm --prefix server run build
|
|
|
|
FROM node:14.17.3-buster
|
|
|
|
ENV NODE_ENV=production
|
|
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://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
|
|
unzip instantclient-basiclite-linuxx64.zip && rm -f instantclient-basiclite-linuxx64.zip && \
|
|
cd /opt/oracle/instantclient* && rm -f *jdbc* *occi* *mysql* *mql1* *ipc1* *jar uidrvci genezi adrci && \
|
|
echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig
|
|
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 frontend build
|
|
COPY --from=builder /app/frontend/build ./app/frontend/build
|
|
# copy server build
|
|
# NOTE: typescript dependency on /server/scripts and typeorm for db creation and migration.
|
|
# Need to check if we can optimize such that only executable dist from prev stage can be copied
|
|
COPY --from=builder /app/server ./app/server
|
|
|
|
WORKDIR /app
|
|
|
|
ENTRYPOINT ["./server/entrypoint.sh"]
|