From be45e737ec9acfa0c82a874bcfa212bf85bfc586 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Sat, 8 Jul 2023 19:21:12 -0500 Subject: [PATCH] Broke up RUN statements based on feedback Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/deployment/docker.md | 34 +++++++++++++------ .../default-app/packages/backend/Dockerfile | 12 ++++--- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 33afccc5b4..dc436129c5 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -56,15 +56,19 @@ Once the host build is complete, we are ready to build our image. The following ```Dockerfile FROM node:16-bullseye-slim -# Install sqlite3 and isolated-vm dependencies. -# You can remove libsqlite3-dev if you don't use sqlite3 in the image, -# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev python3 g++ build-essential && \ + apt-get install -y --no-install-recommends python3 g++ build-essential && \ yarn config set python /usr/bin/python3 +# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, +# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get install -y --no-install-recommends libsqlite3-dev + # From here on we use the least-privileged `node` user to run the backend. USER node @@ -170,13 +174,19 @@ RUN find packages \! -name "package.json" -mindepth 2 -maxdepth 2 -exec rm -rf { # Stage 2 - Install dependencies and build packages FROM node:16-bullseye-slim AS build -# Install sqlite3 and isolated-vm dependencies, if you don't use sqlite you can remove libsqlite3-dev +# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev python3 g++ build-essential && \ + apt-get install -y --no-install-recommends python3 g++ build-essential && \ yarn config set python /usr/bin/python3 +# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, +# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get install -y --no-install-recommends libsqlite3-dev + USER node WORKDIR /app @@ -201,15 +211,19 @@ RUN mkdir packages/backend/dist/skeleton packages/backend/dist/bundle \ # Stage 3 - Build the actual backend image and install production dependencies FROM node:16-bullseye-slim -# Install sqlite3 and isolated-vm dependencies. -# You can remove libsqlite3-dev if you don't use sqlite3 in the image, -# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev python3 g++ build-essential && \ + apt-get install -y --no-install-recommends python3 g++ build-essential && \ yarn config set python /usr/bin/python3 +# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, +# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get install -y --no-install-recommends libsqlite3-dev + # From here on we use the least-privileged `node` user to run the backend. USER node diff --git a/packages/create-app/templates/default-app/packages/backend/Dockerfile b/packages/create-app/templates/default-app/packages/backend/Dockerfile index 95a5ff52d1..d065e4a248 100644 --- a/packages/create-app/templates/default-app/packages/backend/Dockerfile +++ b/packages/create-app/templates/default-app/packages/backend/Dockerfile @@ -11,15 +11,19 @@ FROM node:16-bullseye-slim -# Install sqlite3 and isolated-vm dependencies. -# You can remove libsqlite3-dev if you don't use sqlite3 in the image, -# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +# Install isolate-vm dependencies, these are needed by the @backstage/plugin-scaffolder-backend. RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update && \ - apt-get install -y --no-install-recommends libsqlite3-dev python3 g++ build-essential && \ + apt-get install -y --no-install-recommends python3 g++ build-essential && \ yarn config set python /usr/bin/python3 +# Install sqlite3 dependencies. You can skip this if you don't use sqlite3 in the image, +# in which case you should also move better-sqlite3 to "devDependencies" in package.json. +RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get install -y --no-install-recommends libsqlite3-dev + # From here on we use the least-privileged `node` user to run the backend. USER node