You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Turborepo构建的Monorepo在Docker Compose构建时找不到共享模块

Docker Compose构建Next.js Monorepo时共享模块无法解析的问题

这是一个包含两个Next.js 13 + TypeScript应用的Monorepo,共享模块存放在./packages/shared目录下。本地构建应用一切正常,但通过Docker Compose构建时出现共享模块找不到的错误,例如无法解析ui/AvatarMenu、ui/form/Select等模块。

构建错误日志

docker-compose up -d
[+] Building 74.5s (15/15) FINISHED                                                                                                               docker:desktop-linux
 => [blotter internal] load build definition from Dockerfile                                                                                                      0.1s
 => => transferring dockerfile: 1.44kB                                                                                                                            0.0s
 => [blotter internal] load .dockerignore                                                                                                                         0.0s
 => => transferring context: 99B                                                                                                                                  0.0s
 => [blotter internal] load metadata for docker.io/library/node:19.9.0-alpine3.18                                                                                 2.0s
 => [blotter auth] library/node:pull token for registry-1.docker.io                                                                                               0.0s
 => [blotter internal] load build context                                                                                                                         2.9s
 => => transferring context: 191.45MB                                                                                                                             2.9s
 => [blotter base 1/1] FROM docker.io/library/node:19.9.0-alpine3.18@sha256:8ec543d4795e2e85af924a24f8acb039792ae9fe8a42ad5b4bf4c277ab34b62e                      0.0s
 => CACHED [blotter pruner 1/5] RUN apk add --no-cache libc6-compat                                                                                               0.0s
 => CACHED [blotter pruner 2/5] WORKDIR /app                                                                                                                      0.0s
 => CACHED [blotter pruner 3/5] RUN npm install turbo --global                                                                                                    0.0s
 => [blotter pruner 4/5] COPY . .                                                                                                                                 2.7s
 => [blotter pruner 5/5] RUN turbo prune --scope=blotter                                                                                                          1.7s
 => [blotter builder 3/6] COPY --from=pruner /app/out/ .                                                                                                          1.2s
 => [blotter builder 4/6] RUN npm install turbo --global                                                                                                          5.6s
 => [blotter builder 5/6] RUN npm install                                                                                                                        31.7s
 => ERROR [blotter builder 6/6] RUN turbo run build --filter=blotter...                                                                                          25.3s
------
 > [blotter builder 6/6] RUN turbo run build --filter=blotter...:
0.255 • Packages in scope: auth, blotter, eslint-config-custom, ui
0.255 • Running build in 4 packages
0.255 • Remote caching disabled
0.256 blotter:build: cache miss, executing 7f0876bc395b9e06
0.896 blotter:build:
0.896 blotter:build: > blotter@0.1.0 build
0.896 blotter:build: > next build
0.896 blotter:build:
1.454 blotter:build: - info Loaded env from /app/apps/blotter/.env
1.648 blotter:build: Attention: Next.js now collects completely anonymous telemetry regarding usage.
1.648 blotter:build: This information is used to shape Next.js' roadmap and prioritize features.
1.649 blotter:build: You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, via Next.js official documentation.
1.649 blotter:build:
1.767 blotter:build: - info Creating an optimized production build...
24.76 blotter:build: Failed to compile.
24.76 blotter:build:
24.76 blotter:build: ./app/blotter/ClientLayout.tsx
24.76 blotter:build: Module not found: Can't resolve 'ui/AvatarMenu'
24.76 blotter:build:
24.76 blotter:build: Import trace for requested module:
24.76 blotter:build: ./app/blotter/Session.tsx
24.76 blotter:build:
24.76 blotter:build: ./app/blotter/ops/compra-venta-genuina/new/step1.tsx
24.76 blotter:build: Module not found: Can't resolve 'ui/form/Select'
24.76 blotter:build:
24.76 blotter:build: Import trace for requested module:
24.76 blotter:build: ./app/blotter/ops/compra-venta-genuina/new/page.tsx
24.76 blotter:build:
24.76 blotter:build: ./app/login/page.tsx
24.76 blotter:build: Module not found: Can't resolve 'ui/Login'
24.76 blotter:build:
24.76 blotter:build:
24.76 blotter:build: > Build failed because of webpack errors
 24.81 blotter:build: npm ERR! Lifecycle script build failed with error: 
24.81 blotter:build: npm ERR! Error: command failed
24.81 blotter:build: npm ERR!   in workspace: blotter@0.1.0
24.81 blotter:build: npm ERR!   at location: /app/apps/blotter
24.82 blotter:build: ERROR: command finished with error: command (/app/apps/blotter) npm run build exited (1)
24.82 blotter#build: command (/app/apps/blotter) npm run build exited (1)
24.82
24.82  Tasks:    0 successful, 1 total
24.82 Cached:    0 cached, 1 total
24.82   Time:    24.577s
24.82 Failed:    blotter#build
24.82
24.82  ERROR  run failed: command  exited (1)
------
failed to solve: process "/bin/sh -c turbo run build --filter=blotter..." did not complete successfully: exit code: 1

Blotter的Dockerfile

FROM node:19.9.0-alpine3.18 as base

# Reference Turbo's Docker deployment guide

FROM base AS pruner
RUN apk add --no-cache libc6-compat
WORKDIR /app
RUN npm install turbo --global
COPY . .
# Avoid multi-stage builds for now
# RUN turbo prune --scope=blotter --docker
RUN turbo prune --scope=blotter

FROM base AS builder
RUN apk add --no-cache libc6-compat
WORKDIR /app

# Build the project
COPY --from=pruner /app/out/ .
# TODO: npm ci no funciona con los workspaces.
RUN npm install turbo --global
RUN npm install
RUN turbo run build --filter=blotter...

ENTRYPOINT ["tail", "-f", "/dev/null"]

Advisors的Dockerfile

FROM node:19.9.0-alpine3.18 as base

# Reference Turbo's Docker deployment guide

FROM base AS pruner
RUN apk add --no-cache libc6-compat
WORKDIR /app
RUN npm install turbo --global
COPY . .
# Avoid multi-stage builds for now
# RUN turbo prune --scope=blotter --docker
RUN turbo prune --scope=advisors

FROM base AS builder
RUN apk add --no-cache libc6-compat
WORKDIR /app

# Build the project
COPY --from=pruner /app/out/ .
# TODO: npm ci no funciona con los workspaces.
RUN npm install turbo --global
RUN npm install 
RUN turbo run build --filter=advisors...

ENTRYPOINT ["tail", "-f", "/dev/null"]

已确认构建容器内的node_modules中存在UI等共享依赖,但仍出现上述模块无法解析的错误。


内容的提问来源于stack exchange,提问作者Matias Sartori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:44:54