From c3b91a84412cbe7e4d73085c756503084491f890 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 31 Dec 2025 22:29:25 -0500 Subject: [PATCH] fix: Docker build with Yarn 4 (#11031) * Add missing corepack * Serialize plugin gen to protect memory * fix: Missing Yarn4 config * Prune dev deps --- .dockerignore | 1 + Dockerfile | 2 ++ Dockerfile.base | 6 ++---- build.js | 35 ++++++++++++++++++----------------- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/.dockerignore b/.dockerignore index df3b248574..919e53742a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,3 +15,4 @@ crowdin.yml build docker-compose.yml node_modules +.yarn diff --git a/Dockerfile b/Dockerfile index f325bcd03f..de603e3f4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,6 +32,8 @@ RUN apt-get update \ && apt-get install -y wget \ && rm -rf /var/lib/apt/lists/* +RUN corepack enable + ENV FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data RUN mkdir -p "$FILE_STORAGE_LOCAL_ROOT_DIR" && \ chown -R nodejs:nodejs "$FILE_STORAGE_LOCAL_ROOT_DIR" && \ diff --git a/Dockerfile.base b/Dockerfile.base index 664953178f..910a55e7a9 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -3,7 +3,7 @@ FROM node:22.21.0 AS deps ARG APP_PATH WORKDIR $APP_PATH -COPY ./package.json ./yarn.lock ./ +COPY ./package.json ./yarn.lock ./.yarnrc.yml ./ COPY ./patches ./patches RUN apt-get update && apt-get install -y cmake @@ -17,9 +17,7 @@ COPY . . ARG CDN_URL RUN yarn build -RUN rm -rf node_modules - -RUN yarn install --immutable --network-timeout 1000000 && \ +RUN yarn workspaces focus --production && \ yarn cache clean ENV PORT=3000 diff --git a/build.js b/build.js index 7c76380efd..4cce9e9408 100755 --- a/build.js +++ b/build.js @@ -46,25 +46,26 @@ async function build() { execAsync( "yarn babel --extensions .ts,.tsx --quiet -d ./build/shared ./shared" ), - ...d.map(async (plugin) => { - const hasServer = existsSync(`./plugins/${plugin}/server`); - - if (hasServer) { - await execAsync( - `yarn babel --extensions .ts,.tsx --quiet -d "./build/plugins/${plugin}/server" "./plugins/${plugin}/server"` - ); - } - - const hasShared = existsSync(`./plugins/${plugin}/shared`); - - if (hasShared) { - await execAsync( - `yarn babel --extensions .ts,.tsx --quiet -d "./build/plugins/${plugin}/shared" "./plugins/${plugin}/shared"` - ); - } - }), ]); + for (const plugin of d) { + const hasServer = existsSync(`./plugins/${plugin}/server`); + + if (hasServer) { + await execAsync( + `yarn babel --extensions .ts,.tsx --quiet -d "./build/plugins/${plugin}/server" "./plugins/${plugin}/server"` + ); + } + + const hasShared = existsSync(`./plugins/${plugin}/shared`); + + if (hasShared) { + await execAsync( + `yarn babel --extensions .ts,.tsx --quiet -d "./build/plugins/${plugin}/shared" "./plugins/${plugin}/shared"` + ); + } + } + // Copy static files console.log("Copying static files…"); await Promise.all([