64 lines · 2.4 KB · Dockerfile
RawDownload
FROM node:22-slim AS base ENV PNPM_HOME="/pnpm"ENV PATH="$PNPM_HOME:$PATH" RUN corepack enableCOPY . /appWORKDIR /app FROM base AS prod-depsRUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile --ignore-scripts FROM base AS buildRUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install && pnpm run build # Install GoFROM golang:1.24 AS go-baseCOPY sharedLibs/go-html-to-md /app/sharedLibs/go-html-to-md # Install Go dependencies and build parser libRUN cd /app/sharedLibs/go-html-to-md && \    go mod download && \    go build -o libhtml-to-markdown.so -buildmode=c-shared html-to-markdown.go && \    chmod +x libhtml-to-markdown.so # Install RustFROM rust:1-slim AS rust-baseCOPY sharedLibs/html-transformer /app/sharedLibs/html-transformerCOPY sharedLibs/pdf-parser /app/sharedLibs/pdf-parserCOPY sharedLibs/crawler /app/sharedLibs/crawler # Install Rust dependencies and build transformer libRUN cd /app/sharedLibs/html-transformer && \    cargo build --release --locked && \    chmod +x target/release/libhtml_transformer.so # Install Rust dependencies and build PDF parser libRUN cd /app/sharedLibs/pdf-parser && \    cargo build --release --locked && \    chmod +x target/release/libpdf_parser.so # Install Rust dependencies and build crawler libRUN cd /app/sharedLibs/crawler && \    cargo build --release --locked && \    chmod +x target/release/libcrawler.so FROM baseCOPY --from=build /app/dist /app/distCOPY --from=prod-deps /app/node_modules /app/node_modulesCOPY --from=go-base /app/sharedLibs/go-html-to-md/libhtml-to-markdown.so /app/sharedLibs/go-html-to-md/libhtml-to-markdown.soCOPY --from=rust-base /app/sharedLibs/html-transformer/target/release/libhtml_transformer.so /app/sharedLibs/html-transformer/target/release/libhtml_transformer.soCOPY --from=rust-base /app/sharedLibs/pdf-parser/target/release/libpdf_parser.so /app/sharedLibs/pdf-parser/target/release/libpdf_parser.soCOPY --from=rust-base /app/sharedLibs/crawler/target/release/libcrawler.so /app/sharedLibs/crawler/target/release/libcrawler.so # Install gitRUN apt-get update && apt-get install -y git procps && rm -rf /var/lib/apt/lists/* # Start the server by default, this can be overwritten at runtimeEXPOSE 8080 # Make sure the entrypoint script has the correct line endingsRUN sed -i 's/\r$//' /app/docker-entrypoint.sh ENTRYPOINT "/app/docker-entrypoint.sh"