1
1
# syntax=docker/dockerfile:1.2
2
2
3
3
# Stage 1 - Create yarn install skeleton layer
4
- FROM node:18 -bookworm-slim AS packages
4
+ FROM node:20 -bookworm-slim AS packages
5
5
6
6
WORKDIR /app
7
7
COPY package.json yarn.lock ./
@@ -14,14 +14,14 @@ COPY plugins plugins
14
14
RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -exec rm -rf {} \+
15
15
16
16
# Stage 2 - Install dependencies and build packages
17
- FROM node:18 -bookworm-slim AS build
17
+ FROM node:20 -bookworm-slim AS build
18
18
19
19
# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend.
20
20
RUN apt-get update && \
21
- apt-get install -y --no-install-recommends python3 g++ build-essential && \
21
+ apt-get install -y --no-install-recommends python3 g++ git build-essential && \
22
22
yarn config set python /usr/bin/python3
23
23
24
- # Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image,
24
+ # Install sqlite3 dependencies. You can skip this if yo=u don't use sqlite3 in the image,
25
25
# in which case you should also move better-sqlite3 to "devDependencies" in package.json.
26
26
RUN apt-get update && \
27
27
apt-get install -y --no-install-recommends libsqlite3-dev
@@ -40,15 +40,13 @@ COPY --chown=node:node . .
40
40
41
41
RUN yarn tsc
42
42
RUN yarn --cwd packages/backend build
43
- # If you have not yet migrated to package roles, use the following command instead:
44
- # RUN yarn --cwd packages/backend backstage-cli backend:bundle --build-dependencies
45
43
46
44
RUN mkdir packages/backend/dist/skeleton packages/backend/dist/bundle \
47
45
&& tar xzf packages/backend/dist/skeleton.tar.gz -C packages/backend/dist/skeleton \
48
46
&& tar xzf packages/backend/dist/bundle.tar.gz -C packages/backend/dist/bundle
49
47
50
48
# Stage 3 - Build the actual backend image and install production dependencies
51
- FROM node:18 -bookworm-slim
49
+ FROM node:20 -bookworm-slim
52
50
53
51
# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend.
54
52
RUN apt-get update && \
@@ -63,11 +61,6 @@ RUN apt-get update && \
63
61
# From here on we use the least-privileged `node` user to run the backend.
64
62
USER node
65
63
66
- # This should create the app dir as `node`.
67
- # If it is instead created as `root` then the `tar` command below will
68
- # fail: `can't create directory 'packages/': Permission denied`.
69
- # If this occurs, then ensure BuildKit is enabled (`DOCKER_BUILDKIT=1`)
70
- # so the app dir is correctly created as `node`.
71
64
WORKDIR /app
72
65
73
66
# Copy the install dependencies from the build stage and context
0 commit comments