diff --git a/server-ce/Dockerfile b/server-ce/Dockerfile index 93366a1cec..91255ba280 100644 --- a/server-ce/Dockerfile +++ b/server-ce/Dockerfile @@ -25,20 +25,25 @@ ENV COREPACK_ENABLE_NETWORK=0 # Install yarn dependencies # ------------------------- +# YARN_NETWORK_CONCURRENCY=1 serialises Yarn's fetch step. The git-sourced +# @replit/codemirror-* deps are prepared with Yarn Classic, which pulls *all* +# esbuild platform binaries into the one shared /usr/local/share/.cache/yarn +# folder; preparing several of them in parallel races and corrupts that cache +# (EEXIST / missing .yarn-tarball.tgz). Serialising the fetch removes the race. RUN --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=/root/.yarn/berry/cache,id=server-ce-yarn-cache \ - --mount=type=cache,target=/usr/local/share/.cache/yarn,id=server-ce-yarn-fallback-cache-v2 \ - --mount=type=tmpfs,target=/tmp node genScript install | bash + --mount=type=cache,target=/usr/local/share/.cache/yarn,id=server-ce-yarn-fallback-cache-v3 \ + --mount=type=tmpfs,target=/tmp node genScript install | YARN_NETWORK_CONCURRENCY=1 bash # Add the actual source files # --------------------------- COPY --parents libraries/ services/ tools/migrations/ /overleaf/ RUN --mount=type=cache,target=/root/.cache \ --mount=type=cache,target=/root/.yarn/berry/cache,id=server-ce-yarn-cache \ - --mount=type=cache,target=/usr/local/share/.cache/yarn,id=server-ce-yarn-fallback-cache-v2 \ + --mount=type=cache,target=/usr/local/share/.cache/yarn,id=server-ce-yarn-fallback-cache-v3 \ --mount=type=cache,target=/overleaf/services/web/node_modules/.cache,id=server-ce-webpack-cache \ --mount=type=tmpfs,target=/tmp \ - node genScript compile | bash || \ + node genScript compile | YARN_NETWORK_CONCURRENCY=1 bash || \ (echo "==== PACK LOGS ====" && find /tmp -name pack.log -exec cat {} \; && exit 1) # Copy runit service startup scripts to its location # --------------------------------------------------