Zoeken op website

typescript - Turborepo/Lamda/Dockerfile - Fout bij het niet vinden van intern pakket


Ik heb een monorepo die Turborepo gebruikt en een Lambda-functie bevat die afhankelijk is van een intern pakket. In feite iets zoals de volgende structuur...

De service is "resize" en het hangt af van "@repo/image".

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

Dit is natuurlijk vereenvoudigd.

Het Docker-bestand voor de "resize"-service ziet er als volgt uit (gebaseerd op het Docker-voorbeeld van turborepo)…

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" ]

Wanneer ik de Lambda-functie bouw en implementeer met de Docker-container, krijg ik een foutmelding dat het interne pakket "@repo/image" niet kan worden gevonden.

Het voorbeeld voor Docker van Turborepo is voor een NextJS-app, dus ik moet hier iets missen. Ik ben geen gevorderde Docker-gebruiker, dus er kan nog iets anders aan de hand zijn. Het commando dat ik gebruik om de Docker-image te bouwen is...

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

Ik heb voorbeelden gezien met het "serverless" framework, maar ik ben op zoek naar het gebruik van de Docker-aanpak met CDK als mijn implementatiemethode.

Bedankt voor alle hulp die je kunt bieden.