Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
76 lines (58 loc) · 2.75 KB
/
Copy pathDockerfile
File metadata and controls
76 lines (58 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Build arguments
ARG SOURCE_CODE=.
ARG BUILD_MODE=ODH
# Use ubi9/nodejs-22 as default base image
ARG BASE_IMAGE="registry.access.redhat.com/ubi9/nodejs-22:latest"
ARG MINIMAL_IMAGE="registry.access.redhat.com/ubi9/nodejs-22-minimal:latest"
FROM ${BASE_IMAGE} AS builder
## Build args to be used at this step
ARG SOURCE_CODE
ARG BUILD_MODE
WORKDIR /usr/src/app
# Install the pinned pnpm CLI from the npm-prefetched bootstrap package.
COPY --chown=default:root prefetch/pnpm/package.json prefetch/pnpm/package-lock.json ./prefetch/pnpm/
ENV PATH="/usr/src/app/prefetch/pnpm/node_modules/.bin:${PATH}"
RUN npm ci --prefix ./prefetch/pnpm --prefer-offline --ignore-scripts --no-audit --no-fund --no-progress \
&& test "$(pnpm --version)" = "11.22.0"
## Copying in source code
COPY --chown=default:root ${SOURCE_CODE} /usr/src/app
# Change file ownership to the assemble user
USER default
RUN CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile --prefer-offline
ENV TURBO_TELEMETRY_DISABLED=1
ENV NODE_OPTIONS=--max-old-space-size=8192
RUN if [ "$BUILD_MODE" = "RHOAI" ]; then \
echo "Setting up RHOAI vars.."; \
echo '#!/bin/sh' > /tmp/env.sh; \
echo 'export ODH_LOGO=../images/rhoai-logo.svg' >> /tmp/env.sh; \
echo 'export ODH_LOGO_DARK=../images/rhoai-logo-dark-theme.svg' >> /tmp/env.sh; \
echo 'export ODH_PRODUCT_NAME="Red Hat OpenShift AI"' >> /tmp/env.sh; \
echo 'export ODH_FAVICON="rhoai-favicon.svg"' >> /tmp/env.sh; \
echo 'export DOC_LINK="https://docs.redhat.com/en/documentation/red_hat_openshift_ai/"' >> /tmp/env.sh; \
echo 'export SUPPORT_LINK="https://access.redhat.com/support/cases/#/case/new/open-case?caseCreate=true"' >> /tmp/env.sh; \
echo 'export COMMUNITY_LINK=""' >> /tmp/env.sh; \
else \
echo "Sticking to ODH vars.."; \
echo '#!/bin/sh' > /tmp/env.sh; \
fi
RUN . /tmp/env.sh && pnpm run build
FROM ${MINIMAL_IMAGE} AS runtime
# The base image includes curl for liveness and readiness probes.
RUN curl --version
USER 1001:0
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/logs && chmod 775 /usr/src/app/logs
COPY --chown=1001:0 --from=builder /usr/src/app/frontend/public /usr/src/app/frontend/public
COPY --chown=1001:0 --from=builder /usr/src/app/backend/dist /usr/src/app/backend/dist
COPY --chown=1001:0 --from=builder /usr/src/app/.env /usr/src/app/.env
COPY --chown=1001:0 --from=builder /usr/src/app/data /usr/src/app/data
WORKDIR /usr/src/app/backend
# Mirrors backend package.json "start"
ENV NODE_ENV=production
ENV IP=127.0.0.1
CMD ["node", "./dist/server.js"]
LABEL io.opendatahub.component="odh-dashboard" \
io.k8s.display-name="odh-dashboard" \
name="open-data-hub/odh-dashboard-ubi9" \
summary="odh-dashboard" \
description="Open Data Hub Dashboard"