ウェブサイト検索

typescript - Turborepo/Lamda/Dockerfile - 内部パッケージが見つからないエラー


私はTurborepoを使用しているモノレポを持っており、その中に内部パッケージに依存するLambda関数があります。基本的には、次のような構造です…

サービスは「resize」で、依存先は「@repo/image」です。

services
  resize
    package.json
    Dockerfile
    src
      index.ts
packages
  image
    package.json
    src
      helper.ts

これはもちろん簡略化されています。

「resize」サービスの Docker ファイルはこのようになっています(turborepo の Docker サンプルに基づいています)...

FROM public.ecr.aws/lambda/nodejs:20 as base

FROM base AS builder
WORKDIR ${LAMBDA_TASK_ROOT}
RUN npm i turbo --global
COPY . .
RUN turbo prune resize --docker

FROM base AS installer
WORKDIR ${LAMBDA_TASK_ROOT}
COPY .gitignore .gitignore
COPY --from=builder /${LAMBDA_TASK_ROOT}/out/json/ .
COPY --from=builder /${LAMBDA_TASK_ROOT}/out/package-lock.json ./package-lock.json
RUN npm i
COPY --from=builder /${LAMBDA_TASK_ROOT}/out/full/ .
COPY turbo.json turbo.json
RUN npm run build -- --filter=resize...

FROM base AS runner
WORKDIR ${LAMBDA_TASK_ROOT}

RUN ls ${LAMBDA_TASK_ROOT}

COPY --from=installer /${LAMBDA_TASK_ROOT}/services/resize/package.json .
COPY --from=installer /${LAMBDA_TASK_ROOT}/services/resize/dist/index.js .

RUN ls ${LAMBDA_TASK_ROOT}

CMD [ "index.handler" ]

DockerコンテナでLambda関数をビルドしてデプロイすると、内部パッケージ「@repo/image」が見つからないというエラーが発生します。

Turborepo の Docker の例は NextJS アプリ用なので、何か見落としているに違いありません。私は高度な Docker ユーザーではないので、他に何かが起こっている可能性もあります。私が Docker イメージをビルドするために使うコマンドは...

docker build --platform linux/amd64 -f services/resize/Dockerfile . -t resizeservice --no-cache

私は「serverless」フレームワークを使った例を見たことがありますが、デプロイ方法としてCDKを使ったDockerアプローチを利用したいと考えています。

ご助力いただけると幸いです。