typescript - Turborepo/Lamda/Dockerfile - Ralat Tidak Menemui Pakej Dalaman
Saya mempunyai satu monorepo menggunakan Turborepo yang mempunyai fungsi Lambda yang bergantung pada pakej dalaman. Pada dasarnya, sesuatu seperti struktur berikut...
Perkhidmatan itu ialah "resize" dan ia bergantung pada "@repo/image".
services
resize
package.json
Dockerfile
src
index.ts
packages
image
package.json
src
helper.ts
Ini tentu saja dipermudah.
Fail docker untuk perkhidmatan "resize" kelihatan seperti ini (berdasarkan contoh docker dari 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" ]
Apabila saya membina dan menyebarkan fungsi Lambda dengan kontena docker, saya mendapat ralat yang menunjukkan ia tidak dapat menemui pakej dalaman "@repo/image".
Contoh untuk Docker dari Turborepo adalah untuk aplikasi NextJS, jadi saya mesti terlepas sesuatu di sini. Saya bukan pengguna Docker yang mahir, jadi mungkin ada sesuatu yang lain berlaku. Perintah yang saya gunakan untuk membina imej Docker adalah...
docker build --platform linux/amd64 -f services/resize/Dockerfile . -t resizeservice --no-cache
Saya telah melihat contoh menggunakan rangka kerja "serverless", tetapi saya ingin menggunakan pendekatan Docker dengan CDK sebagai pendekatan penyebaran saya.
Terima kasih atas sebarang bantuan yang anda boleh berikan.