Skip to content

Commit 6d3be41

Browse files
authored
Fix dockerfile to avoid the installation of playwright on production (opendatahub-io#1004)
* Fix dockerfile and migrate from s2i * WIP commit to avoid installng playwright in prod * Adapt dockerfile to node 18 * Update copy to runtime container * Fix some issues in the dockerfile multistage * Add testing and lining dependencies to optionalDependencies
1 parent b37d37a commit 6d3be41

File tree

6 files changed

+2892
-3854
lines changed

6 files changed

+2892
-3854
lines changed

.dockerignore

+3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@ frontend/node_modules
22
frontend/public
33
backend/node_modules
44
backend/dist
5+
node_modules/
56

67
.github/
78
.vscode/
89
.idea/
910
tests/
1011
**/__mocks__/
12+
**/__tests__/
13+
**/.storybook/
1114
scripts/
1215
manifests/
1316

Dockerfile

+28-20
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,45 @@ ARG SOURCE_CODE=.
44
# Use ubi8/nodejs-18 as default base image
55
ARG BASE_IMAGE="registry.access.redhat.com/ubi8/nodejs-18:latest"
66

7-
8-
FROM ${BASE_IMAGE}
7+
FROM ${BASE_IMAGE} as builder
98

109
## Build args to be used at this step
1110
ARG SOURCE_CODE
1211

13-
LABEL io.opendatahub.component="odh-dashboard" \
14-
io.k8s.display-name="odh-dashboard" \
15-
name="open-data-hub/odh-dashboard-ubi8" \
16-
summary="odh-dashboard" \
17-
description="Open Data Hub Dashboard"
12+
WORKDIR /usr/src/app
1813

14+
## Copying in source code
15+
COPY --chown=default:root ${SOURCE_CODE} /usr/src/app
1916

20-
## Switch to root as required for some operations
21-
USER root
17+
# Change file ownership to the assemble user
18+
USER default
2219

23-
## Copying in source code
24-
RUN mkdir /tmp/src && chown -R 1001:0 /tmp/src
25-
COPY --chown=default:root ${SOURCE_CODE} /tmp/src
20+
RUN npm ci --omit=optional
2621

27-
## For npm context. The assemble script will "mv /tmp/src/* /opt/app-root/src"
28-
#@ but that won't pick up .* files at the root
29-
COPY ${SOURCE_CODE}/.npmrc /opt/app-root/src/
22+
RUN npm run build
23+
24+
FROM ${BASE_IMAGE} as runtime
25+
26+
WORKDIR /usr/src/app
27+
28+
RUN mkdir /usr/src/app/logs
3029

31-
# Change file ownership to the assemble user
3230
USER default
3331

34-
## Build dashboard using NPM
35-
ENV NPM_CONFIG_NODEDIR=/usr
36-
RUN /usr/libexec/s2i/assemble
32+
COPY --chown=default:root --from=builder /usr/src/app/frontend/public /usr/src/app/frontend/public
33+
COPY --chown=default:root --from=builder /usr/src/app/backend/package.json /usr/src/app/backend/package.json
34+
COPY --chown=default:root --from=builder /usr/src/app/backend/package-lock.json /usr/src/app/backend/package-lock.json
35+
COPY --chown=default:root --from=builder /usr/src/app/backend/dist /usr/src/app/backend/dist
36+
37+
RUN cd backend && npm ci --omit=dev --omit=optional
3738

38-
CMD /usr/libexec/s2i/run
39+
WORKDIR /usr/src/app/backend
3940

41+
CMD ["npm", "run", "start"]
4042

43+
LABEL io.opendatahub.component="odh-dashboard" \
44+
io.k8s.display-name="odh-dashboard" \
45+
name="open-data-hub/odh-dashboard-ubi8" \
46+
summary="odh-dashboard" \
47+
description="Open Data Hub Dashboard"
48+

0 commit comments

Comments
 (0)