2023-01-30 23:02:59 +00:00
# Base image to share ENV vars that activate VENV.
FROM quay.io/sartography/node:latest AS base
2022-11-09 03:36:39 +00:00
2022-10-12 14:21:49 +00:00
RUN mkdir /app
WORKDIR /app
2022-11-04 23:03:53 +00:00
# this matches total memory on spiffworkflow-demo
ENV NODE_OPTIONS = --max_old_space_size= 2048
2023-01-30 23:02:59 +00:00
# Setup image for installing JS dependencies.
FROM base AS setup
COPY . /app/
2022-11-09 03:36:39 +00:00
2023-01-31 03:35:24 +00:00
RUN cp /app/package.json /app/package.json.bak
2023-01-31 14:27:02 +00:00
ADD justservewebserver.package.json /app/package.json
2023-01-31 03:35:24 +00:00
RUN npm ci --ignore-scripts
RUN cp -r /app/node_modules /app/node_modules.justserve
RUN cp /app/package.json.bak /app/package.json
2022-10-12 14:21:49 +00:00
# npm ci because it respects the lock file.
# --ignore-scripts because authors can do bad things in postinstall scripts.
# https://cheatsheetseries.owasp.org/cheatsheets/NPM_Security_Cheat_Sheet.html
# npx can-i-ignore-scripts can check that it's safe to ignore scripts.
2022-11-04 23:04:59 +00:00
RUN npm ci --ignore-scripts
2022-11-09 03:36:39 +00:00
2023-04-11 19:48:34 +00:00
RUN ./bin/build
2023-01-30 15:46:04 +00:00
2023-01-30 23:02:59 +00:00
# Final image without setup dependencies.
FROM base AS final
2023-05-13 23:53:50 +00:00
LABEL org.opencontainers.image.description= "Frontend component of SpiffWorkflow, a software development platform for building, running, and monitoring executable diagrams"
2023-01-30 23:02:59 +00:00
# WARNING: On localhost frontend assumes backend is one port lowe.
ENV PORT0 = 7001
COPY --from= setup /app/build /app/build
COPY --from= setup /app/bin /app/bin
2023-01-31 03:35:24 +00:00
COPY --from= setup /app/node_modules.justserve /app/node_modules
2023-01-30 23:02:59 +00:00
2022-10-12 14:21:49 +00:00
ENTRYPOINT [ "/app/bin/boot_server_in_docker" ]