feat(image-processor): switch to OpenRouter Vision for smart crop and remove heavy models

This commit is contained in:
2026-02-22 23:24:22 +01:00
parent 1bbe89c879
commit 2a169f1dfc
4 changed files with 113 additions and 89 deletions

View File

@@ -6,39 +6,21 @@ RUN npm install -g pnpm@10.30.1
FROM base AS build
WORKDIR /app
COPY . .
# Note: Canvas needs build tools on Debian
RUN apt-get update && apt-get install -y python3 make g++ libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
# Delete the prebuilt binary and force a clean rebuild from source for the correct container architecture
ENV npm_config_arch=arm64
ENV npm_config_target_arch=arm64
# We only need standard pnpm install now, no C++ tools needed for basic Sharp
RUN pnpm install --frozen-lockfile
RUN for dir in $(find /app/node_modules -type d -path "*/@tensorflow/tfjs-node"); do \
cd $dir && \
rm -rf lib/napi-v8/* && \
npm_config_build_from_source=true npm_config_arch=arm64 npm_config_target_arch=arm64 npm run install; \
done
# Generate models explicitly for Docker
RUN ls -la packages/image-processor/scripts || true
RUN pnpm dlx tsx packages/image-processor/scripts/download-models.ts
RUN pnpm --filter @mintel/image-processor build
RUN pnpm --filter image-service build
# Generated locally for caching
FROM base
WORKDIR /app
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/apps/image-service/node_modules ./apps/image-service/node_modules
COPY --from=build /app/packages/image-processor/node_modules ./packages/image-processor/node_modules
# Make sure directories exist to prevent COPY errors
RUN mkdir -p /app/packages/image-processor/models /app/apps/image-service/dist
RUN mkdir -p /app/apps/image-service/dist
COPY --from=build /app/apps/image-service/dist ./apps/image-service/dist
COPY --from=build /app/apps/image-service/package.json ./apps/image-service/package.json
COPY --from=build /app/packages/image-processor/dist ./packages/image-processor/dist
COPY --from=build /app/packages/image-processor/package.json ./packages/image-processor/package.json
COPY --from=build /app/packages/image-processor/models ./packages/image-processor/models
# Need runtime dependencies for canvas/sharp on Debian
RUN apt-get update && apt-get install -y libcairo2 libpango-1.0-0 libjpeg62-turbo libgif7 librsvg2-2 && rm -rf /var/lib/apt/lists/*
EXPOSE 8080
WORKDIR /app/apps/image-service

View File

@@ -35,11 +35,9 @@ fastify.get("/process", async (request, reply) => {
try {
const response = await fetch(url);
if (!response.ok) {
return reply
.status(response.status)
.send({
error: `Failed to fetch source image: ${response.statusText}`,
});
return reply.status(response.status).send({
error: `Failed to fetch source image: ${response.statusText}`,
});
}
const arrayBuffer = await response.arrayBuffer();
@@ -50,6 +48,7 @@ fastify.get("/process", async (request, reply) => {
height,
format,
quality,
openRouterApiKey: process.env.OPENROUTER_API_KEY,
});
reply.header("Content-Type", `image/${format}`);