تايبسكريبت - توربوريبو/لامدا/ملف دوكر - خطأ في عدم العثور على الحزمة الداخلية
لدي مستودع أحادي باستخدام Turborepo يحتوي على دالة Lambda تعتمد على حزمة داخلية. بشكل أساسي، شيء مثل البنية التالية...
الخدمة هي "تغيير الحجم" وتعتمد على "@repo/image".
services
resize
package.json
Dockerfile
src
index.ts
packages
image
package.json
src
helper.ts
هذا مبسط بالطبع.
ملف دوكر لخدمة "resize" يبدو هكذا (استنادًا إلى مثال دوكر من 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" ]
عندما أقوم بإنشاء ونشر دالة Lambda باستخدام حاوية Docker، أحصل على خطأ يشير إلى أنه لا يمكن العثور على الحزمة الداخلية "@repo/image".
المثال الخاص بـ Docker من Turborepo هو لتطبيق NextJS، لذا يجب أن هناك شيء أفتقده هنا. أنا لست مستخدمًا متقدمًا لـ Docker، لذا قد يكون هناك شيء آخر يحدث. الأمر الذي أستخدمه لبناء صورة Docker هو...
docker build --platform linux/amd64 -f services/resize/Dockerfile . -t resizeservice --no-cache
لقد رأيت أمثلة تستخدم إطار العمل "serverless"، لكنني أبحث عن استخدام نهج Docker مع CDK كأسلوب النشر الخاص بي.
شكراً لأي مساعدة يمكنك تقديمها.