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.