diff --git a/Dockerfile b/Dockerfile index 2efe25db8..5be0adb1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,45 @@ -FROM node:18 +# Base for final image +FROM debian:bookworm-slim as node-minimal -env BASE_URL= \ +RUN apt update && \ + apt -y dist-upgrade && \ + apt -y install nodejs && \ + apt autoremove -y && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* + +# Temporary image to build app +FROM debian:bookworm-slim as builder + +RUN apt update && \ + apt -y dist-upgrade && \ + apt -y install nodejs npm && \ + apt autoremove -y && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /usr/src/app + +# COPIES +# 1. Files +COPY package*.json .njsscan *.js *.json *.mjs LICENSE ./ + +# 2. Directories +COPY .husky ./.husky/ +COPY packages ./packages/ +COPY landing /usr/src/app/landing +#COPY node_modules ./node_modules/ + +# Build and clean + +RUN npm install && npm run build && \ + rm -rf node_modules */*/node_modules && \ + npm install --production --ignore-scripts && \ + npm cache clean --force + +FROM node-minimal as tom-server + +ENV BASE_URL= \ CRON_SERVICE= \ CROWDSEC_URI= \ CROWDSEC_KEY= \ @@ -54,15 +93,9 @@ env BASE_URL= \ RATE_LIMITING_NB_REQUESTS= \ TRUSTED_PROXIES= -RUN apt update && apt -y dist-upgrade +COPY --from=1 /usr/src/app /usr/src/app/ WORKDIR /usr/src/app -COPY package*.json ./ - -COPY . . - -RUN npm install && npm run build && npm cache clean --force - EXPOSE 3000 CMD [ "node", "/usr/src/app/server.mjs" ] diff --git a/packages/federated-identity-service/Dockerfile b/packages/federated-identity-service/Dockerfile index f0f871e02..d0cbf4994 100644 --- a/packages/federated-identity-service/Dockerfile +++ b/packages/federated-identity-service/Dockerfile @@ -1,4 +1,45 @@ -FROM node:18 +# Base for final image +FROM debian:bookworm-slim as node-minimal + +RUN apt update && \ + apt -y dist-upgrade && \ + apt -y install nodejs && \ + apt autoremove -y && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* + +# Temporary image to build app +FROM debian:bookworm-slim as builder + +RUN apt update && \ + apt -y dist-upgrade && \ + apt -y install nodejs npm && \ + apt autoremove -y && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /usr/src/app + +# COPIES +COPY ./packages/federated-identity-service/server.mjs . +COPY ./packages/crypto ./packages/crypto +COPY ./packages/logger ./packages/logger +COPY ./packages/matrix-resolve ./packages/matrix-resolve +COPY ./packages/matrix-identity-server ./packages/matrix-identity-server +COPY ./packages/config-parser ./packages/config-parser +COPY ./packages/federated-identity-service ./packages/federated-identity-service +COPY .husky .husky +COPY lerna.json ./ +COPY tsconfig-build.json ./ +COPY rollup-template.js ./ +COPY package*.json ./ + +RUN npm install && npm run build && \ + rm -rf node_modules */*/node_modules && \ + npm install --production --ignore-scripts && \ + npm cache clean --force + +FROM node-minimal as federation-server ENV BASE_URL= \ CRON_SERVICE= \ @@ -24,25 +65,9 @@ ENV BASE_URL= \ TRUST_X_FORWARDED_FOR= \ TRUSTED_SERVERS_ADDRESSES= -RUN apt update && apt -y dist-upgrade +COPY --from=1 /usr/src/app /usr/src/app/ WORKDIR /usr/src/app -COPY ./packages/federated-identity-service/server.mjs . - -COPY ./packages/crypto ./packages/crypto -COPY ./packages/logger ./packages/logger -COPY ./packages/matrix-resolve ./packages/matrix-resolve -COPY ./packages/matrix-identity-server ./packages/matrix-identity-server -COPY ./packages/config-parser ./packages/config-parser -COPY ./packages/federated-identity-service ./packages/federated-identity-service -COPY .husky .husky -COPY lerna.json ./ -COPY tsconfig-build.json ./ -COPY rollup-template.js ./ -COPY package*.json ./ - -RUN npm install && npm run build && npm cache clean --force - EXPOSE 3000 -CMD [ "node", "/usr/src/app/server.mjs" ] +CMD [ "node", "/usr/src/app/server.mjs" ] \ No newline at end of file