FROM node:20-bookworm-slim AS build WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends python3 make g++ \ && rm -rf /var/lib/apt/lists/* COPY . . RUN npm ci RUN npm run build:css RUN npm prune --omit=dev FROM node:20-bookworm-slim AS runtime WORKDIR /app ENV NODE_ENV=production \ PORT=7860 \ HOST=0.0.0.0 \ HOME=/home/node \ ACCOUNT_CONFIG_PATH=/data/accounts.json RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates tini \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /data /home/node/.config/antigravity-proxy \ && chown -R node:node /data /home/node /app COPY --from=build --chown=node:node /app/package.json ./package.json COPY --from=build --chown=node:node /app/node_modules ./node_modules COPY --from=build --chown=node:node /app/src ./src COPY --from=build --chown=node:node /app/bin ./bin COPY --from=build --chown=node:node /app/public ./public COPY --from=build --chown=node:node /app/config.example.json ./config.example.json USER node EXPOSE 7860 ENTRYPOINT ["tini", "--"] CMD ["node", "src/index.js"]