misskey-dev / misskey

🌎 A completely free and open interplanetary microblogging platform 🚀
https://misskey-hub.net/
GNU Affero General Public License v3.0
9.88k stars 1.33k forks source link

[2024.2.0-beta.10] docker compose buildがfailする #13177

Closed kyong closed 6 months ago

kyong commented 7 months ago

💡 Summary

2024.2.0-beta.9,2024.2.0-beta.10のバージョンでdocker compose buildがエラーで終了する。 2024.2.0-beta.8はビルドできた。 メモリ 2GBインスタンスではもうビルド無理?

🥰 Expected Behavior

docker compose buildが正常終了する

🤬 Actual Behavior

docker compose buildがエラーで終了する

docker compose build
[+] Building 94.6s (41/49)
 => [internal] load .dockerignore                                                                                                                     0.1s
 => => transferring context: 400B                                                                                                                     0.0s
 => [internal] load build definition from Dockerfile                                                                                                  0.2s
 => => transferring dockerfile: 4.52kB                                                                                                                0.0s
 => resolve image config for docker.io/docker/dockerfile:1.4                                                                                          1.4s
 => CACHED docker-image://docker.io/docker/dockerfile:1.4@sha256:9ba7531bd80fb0a858632727cf7a112fbfd19b17e94c4e84ced81e24ef1a0dbc                     0.0s
 => [internal] load metadata for docker.io/library/node:20.10.0-bullseye-slim                                                                         0.9s
 => [internal] load metadata for docker.io/library/node:20.10.0-bullseye                                                                              1.0s
 => [target-builder  1/11] FROM docker.io/library/node:20.10.0-bullseye@sha256:2df369420e9f9c99dac4e7dee72234ba111e5090493b8a163cdf6d07ca7af214       0.0s
 => [runner  1/15] FROM docker.io/library/node:20.10.0-bullseye-slim@sha256:1d0ce9e6debe189a62c553dc989cb07d28e9bccfb315609f3b26ea7f37a220c4          0.0s
 => [internal] load build context                                                                                                                     0.7s
 => => transferring context: 4.09MB                                                                                                                   0.6s
 => CACHED [native-builder  2/17] RUN --mount=type=cache,target=/var/cache/apt,sharing=locked  --mount=type=cache,target=/var/lib/apt,sharing=locked  0.0s
 => CACHED [native-builder  3/17] RUN corepack enable                                                                                                 0.0s
 => CACHED [native-builder  4/17] WORKDIR /misskey                                                                                                    0.0s
 => CACHED [native-builder  5/17] COPY --link [pnpm-lock.yaml, pnpm-workspace.yaml, package.json, ./]                                                 0.0s
 => CACHED [native-builder  6/17] COPY --link [scripts, ./scripts]                                                                                    0.0s
 => CACHED [native-builder  7/17] COPY --link [packages/backend/package.json, ./packages/backend/]                                                    0.0s
 => CACHED [native-builder  8/17] COPY --link [packages/frontend/package.json, ./packages/frontend/]                                                  0.0s
 => CACHED [native-builder  9/17] COPY --link [packages/sw/package.json, ./packages/sw/]                                                              0.0s
 => CACHED [native-builder 10/17] COPY --link [packages/misskey-js/package.json, ./packages/misskey-js/]                                              0.0s
 => CACHED [native-builder 11/17] COPY --link [packages/misskey-reversi/package.json, ./packages/misskey-reversi/]                                    0.0s
 => CACHED [native-builder 12/17] COPY --link [packages/misskey-bubble-game/package.json, ./packages/misskey-bubble-game/]                            0.0s
 => CACHED [native-builder 13/17] RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked  pnpm i --frozen-lockfile --aggregate-o  0.0s
 => CACHED [target-builder  2/11] RUN apt-get update  && apt-get install -yqq --no-install-recommends  build-essential                                0.0s
 => CACHED [target-builder  3/11] RUN corepack enable                                                                                                 0.0s
 => CACHED [target-builder  4/11] WORKDIR /misskey                                                                                                    0.0s
 => CACHED [target-builder  5/11] COPY --link [pnpm-lock.yaml, pnpm-workspace.yaml, package.json, ./]                                                 0.0s
 => CACHED [target-builder  6/11] COPY --link [scripts, ./scripts]                                                                                    0.0s
 => CACHED [target-builder  7/11] COPY --link [packages/backend/package.json, ./packages/backend/]                                                    0.0s
 => CACHED [target-builder  8/11] COPY --link [packages/misskey-js/package.json, ./packages/misskey-js/]                                              0.0s
 => CACHED [target-builder  9/11] COPY --link [packages/misskey-reversi/package.json, ./packages/misskey-reversi/]                                    0.0s
 => CACHED [target-builder 10/11] COPY --link [packages/misskey-bubble-game/package.json, ./packages/misskey-bubble-game/]                            0.0s
 => CACHED [target-builder 11/11] RUN --mount=type=cache,target=/root/.local/share/pnpm/store,sharing=locked  pnpm i --frozen-lockfile --aggregate-o  0.0s
 => [native-builder 14/17] COPY --link . ./                                                                                                           4.4s
 => CACHED [runner  2/15] RUN apt-get update  && apt-get install -y --no-install-recommends  ffmpeg tini curl libjemalloc-dev libjemalloc2  && ln -s  0.0s
 => CACHED [runner  3/15] WORKDIR /misskey                                                                                                            0.0s
 => [runner  4/15] COPY --chown=misskey:misskey --from=target-builder /misskey/node_modules ./node_modules                                           64.5s
 => [native-builder 15/17] RUN git submodule update --init                                                                                            2.3s
 => ERROR [native-builder 16/17] RUN pnpm build                                                                                                      83.7s
 => [runner  5/15] COPY --chown=misskey:misskey --from=target-builder /misskey/packages/backend/node_modules ./packages/backend/node_modules          1.0s
 => [runner  6/15] COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-js/node_modules ./packages/misskey-js/node_modules    0.6s
 => [runner  7/15] COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-reversi/node_modules ./packages/misskey-reversi/node  0.5s
 => [runner  8/15] COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-bubble-game/node_modules ./packages/misskey-bubble-g  0.4s
------
 > [native-builder 16/17] RUN pnpm build:
#30 1.549
#30 1.549 > misskey@2024.2.0-beta.10 build /misskey
#30 1.549 > pnpm build-pre && pnpm -r build && pnpm build-assets
#30 1.549
#30 2.318
#30 2.318 > misskey@2024.2.0-beta.10 build-pre /misskey
#30 2.318 > node ./scripts/build-pre.js
#30 2.318
#30 3.403 Scope: 7 of 8 workspace projects
#30 3.409 packages/misskey-bubble-game build$ node ./build.js
#30 3.422 packages/misskey-js build$ npm run ts
#30 3.422 packages/misskey-reversi build$ node ./build.js
#30 4.303 packages/misskey-reversi build: Done
#30 4.310 packages/misskey-bubble-game build: Done
#30 5.320 packages/misskey-js build: > misskey-js@2024.2.0-beta.8 ts
#30 5.322 packages/misskey-js build: > npm run ts-esm && npm run ts-dts
#30 5.790 packages/misskey-js build: > misskey-js@2024.2.0-beta.8 ts-esm
#30 5.791 packages/misskey-js build: > tsc --outDir built/esm
#30 17.91 packages/misskey-js build: > misskey-js@2024.2.0-beta.8 ts-dts
#30 17.91 packages/misskey-js build: > tsc --outDir built/dts --declaration true --emitDeclarationOnly true --declarationMap true
#30 27.45 packages/misskey-js build: npm notice
#30 27.45 packages/misskey-js build: npm notice New minor version of npm available! 10.2.3 -> 10.4.0
#30 27.46 packages/misskey-js build: npm notice Changelog: <https://github.com/npm/cli/releases/tag/v10.4.0>
#30 27.46 packages/misskey-js build: npm notice Run `npm install -g npm@10.4.0` to update!
#30 27.47 packages/misskey-js build: npm notice
#30 27.48 packages/misskey-js build: Done
#30 27.51 packages/frontend build$ vite build
#30 27.51 packages/backend build$ swc src -d built -D
#30 27.52 packages/sw build$ node build.js
#30 27.75 packages/sw build: (node:223) ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time
#30 27.75 packages/sw build: (Use `node --trace-warnings ...` to show where the warning was created)
#30 29.16 packages/sw build: Starting SW building...
#30 29.30 packages/sw build: done
#30 29.32 packages/sw build: Done
#30 29.69 packages/backend build: Successfully compiled: 798 files, copied 27 files with swc (655.25ms)
#30 29.72 packages/backend build: Done
#30 30.00 packages/frontend build: vite v5.0.12 building for production...
#30 30.14 packages/frontend build: transforming...
#30 59.59 packages/frontend build: ../misskey-bubble-game/built/esm/index.js (1:30) "Mono" is not exported by "../misskey-bubble-game/built/esm/game.js", imported by "../misskey-bubble-game/built/esm/index.js".
#30 81.47 packages/frontend build: ✓ 2376 modules transformed.
#30 81.65 packages/frontend build: <--- Last few GCs --->
#30 81.66 packages/frontend build: [210:0x74f7af0]    53967 ms: Scavenge 964.7 (997.5) -> 962.3 (997.5) MB, 3.44 / 0.00 ms  (average mu = 0.820, current mu = 0.817) allocation failure;
#30 81.66 packages/frontend build: [210:0x74f7af0]    53990 ms: Scavenge 965.1 (997.5) -> 962.7 (997.5) MB, 3.87 / 0.00 ms  (average mu = 0.820, current mu = 0.817) allocation failure;
#30 81.66 packages/frontend build: [210:0x74f7af0]    54013 ms: Scavenge 966.8 (998.0) -> 963.6 (1006.5) MB, 3.77 / 0.00 ms  (average mu = 0.820, current mu = 0.817) allocation failure;
#30 81.66 packages/frontend build: <--- JS stacktrace --->
#30 81.66 packages/frontend build: FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
#30 81.68 packages/frontend build:  1: 0xc9e850 node::Abort() [node]
#30 81.68 packages/frontend build:  2: 0xb720ff  [node]
#30 81.68 packages/frontend build:  3: 0xec1a70 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [node]
#30 81.68 packages/frontend build:  4: 0xec1d57 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [node]
#30 81.69 packages/frontend build:  5: 0x10d3dc5  [node]
#30 81.69 packages/frontend build:  6: 0x10ebc48 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
#30 81.69 packages/frontend build:  7: 0x10c1d61 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
#30 81.69 packages/frontend build:  8: 0x10c2ef5 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
#30 81.69 packages/frontend build:  9: 0x10a0466 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
#30 81.69 packages/frontend build: 10: 0x14fb386 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
#30 81.70 packages/frontend build: 11: 0x1934ef6  [node]
#30 82.18 packages/frontend build: Aborted (core dumped)
#30 82.26 packages/frontend build: Failed
#30 82.40 /misskey/packages/frontend:
#30 82.40  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  frontend@ build: `vite build`
#30 82.40 Exit status 134
#30 83.04  ELIFECYCLE  Command failed with exit code 1.
------
failed to solve: rpc error: code = Unknown desc = process "/bin/sh -c pnpm build" did not complete successfully: exit code: 1

📝 Steps to Reproduce

git checkout tags/2024.2.0-beta.10 docker compose build

💻 Frontend Environment

* Model and OS of the device(s):
* Browser:
* Server URL: chunchun.world
* Misskey:2024.2.0-beta.10

🛰 Backend Environment (for server admin)

* Installation Method or Hosting Service:docker compose
* Misskey:2024.2.0-beta.10
* Node:20.10.0-bullseye
* PostgreSQL:15-alpine
* Redis:7-alpine
* OS and Architecture: Ubuntu 22.04.3 LTS
* etc: ConoHa Memory 2GB/CPU 3Core

Do you want to address this bug yourself?

kakkokari-gtyih commented 7 months ago

shikiがesmとしてバンドルされるようになったのでそのせいかも

u1-liquid commented 7 months ago
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

:eyes:

tamaina commented 7 months ago

viteのメモリ不足かしらね (shikiのせいだとは思う)

hohinohi commented 7 months ago

2024.2.0でもメモリ2GBサーバでビルドを試みて

[web native-builder 16/17] RUN pnpm build

で JavaScript heap out of memory が出てFailになったので、私も同じ問題に引っかかったっぽいです。

単純にヒープのメモリ容量が足りてないようだったので、一応Swap領域を増やしてからDockerfileに

ENV NODE_OPTIONS=--max-old-space-size=4096

を一行加えて明示的に増やしたところ、こちらの環境ではビルドが通りました。