mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-10-21 01:22:54 +00:00
Some checks failed
Backend Unit Tests / Build packages (push) Waiting to run
Backend Unit Tests / Codegraph select (push) Waiting to run
Backend Unit Tests / TypeScript type checks (push) Blocked by required conditions
Backend Unit Tests / Circular dependency checks (push) Waiting to run
Backend Unit Tests / Tests: api (shard 1/3) (push) Blocked by required conditions
Backend Unit Tests / Tests: api (shard 2/3) (push) Blocked by required conditions
Backend Unit Tests / Tests: api (shard 3/3) (push) Blocked by required conditions
Backend Unit Tests / Tests: data-provider (push) Blocked by required conditions
Backend Unit Tests / Tests: data-schemas (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 1/4) (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 2/4) (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 3/4) (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 4/4) (push) Blocked by required conditions
Codegraph E2E Votes / vote (full suite) (push) Waiting to run
Docker Dev Branch Images Build / publish (push) Waiting to run
Frontend Unit Tests / Codegraph select (push) Waiting to run
Frontend Unit Tests / Build packages (push) Waiting to run
Frontend Unit Tests / TypeScript type checks (client) (push) Blocked by required conditions
Frontend Unit Tests / Tests: @librechat/client (push) Blocked by required conditions
Frontend Unit Tests / Tests: Ubuntu (shard 1/2) (push) Blocked by required conditions
Frontend Unit Tests / Tests: Ubuntu (shard 2/2) (push) Blocked by required conditions
Frontend Unit Tests / Vite build verification (push) Blocked by required conditions
Publish `@librechat/client` to NPM / pack (push) Has been cancelled
Publish `librechat-data-provider` to NPM / pack (push) Has been cancelled
Publish `@librechat/data-schemas` to NPM / pack (push) Has been cancelled
Docker Dev Images Build / publish (push) Has been cancelled
Sync Helm Chart Tags / Ignore non-main push (push) Has been cancelled
Sync Helm Chart Tags / Sync chart tags (push) Has been cancelled
Publish `@librechat/client` to NPM / publish-npm (push) Has been cancelled
Publish `librechat-data-provider` to NPM / publish-npm (push) Has been cancelled
Publish `@librechat/data-schemas` to NPM / publish-npm (push) Has been cancelled
* chore: prepare v0.8.8-rc2 release * test: satisfy mongo meili static checks * test: avoid unsafe logger spy assertion * chore: refresh v0.8.8-rc2 release * test: restore mongo meili test isolation * chore: normalize v0.8.8-rc2 versions * docs: refresh v0.8.8-rc2 release surfaces
85 lines
3 KiB
Docker
85 lines
3 KiB
Docker
# v0.8.8-rc2
|
|
|
|
# Base node image
|
|
FROM node:24.16.0-alpine AS node
|
|
|
|
RUN apk upgrade --no-cache
|
|
RUN apk add --no-cache jemalloc
|
|
RUN apk add --no-cache python3 py3-pip uv
|
|
|
|
# Set environment variable to use jemalloc
|
|
ENV LD_PRELOAD=/usr/lib/libjemalloc.so.2
|
|
|
|
# Add `uv` for extended MCP support
|
|
COPY --from=ghcr.io/astral-sh/uv:0.9.5-python3.12-alpine /usr/local/bin/uv /usr/local/bin/uvx /bin/
|
|
RUN uv --version
|
|
|
|
# Set configurable max-old-space-size with default
|
|
ARG NODE_MAX_OLD_SPACE_SIZE=6144
|
|
ARG NPM_CI_TIMEOUT_SECONDS=1500
|
|
ARG NPM_CI_ATTEMPTS=2
|
|
|
|
RUN mkdir -p /app && chown node:node /app
|
|
WORKDIR /app
|
|
|
|
USER node
|
|
|
|
COPY --chown=node:node package.json package-lock.json ./
|
|
COPY --chown=node:node api/package.json ./api/package.json
|
|
COPY --chown=node:node client/package.json ./client/package.json
|
|
COPY --chown=node:node packages/data-provider/package.json ./packages/data-provider/package.json
|
|
COPY --chown=node:node packages/data-schemas/package.json ./packages/data-schemas/package.json
|
|
COPY --chown=node:node packages/api/package.json ./packages/api/package.json
|
|
|
|
RUN \
|
|
# Allow mounting of these files, which have no default
|
|
touch .env ; \
|
|
# Create directories for the volumes to inherit the correct permissions
|
|
mkdir -p /app/client/public/images /app/logs /app/uploads /app/skill /app/data ; \
|
|
chmod 1777 /app/data ; \
|
|
npm config set fetch-retry-maxtimeout 600000 ; \
|
|
npm config set fetch-retries 5 ; \
|
|
npm config set fetch-retry-mintimeout 15000 ; \
|
|
attempt=1 ; \
|
|
until timeout "$NPM_CI_TIMEOUT_SECONDS" npm ci --no-audit ; do \
|
|
status=$? ; \
|
|
if [ "$attempt" -ge "$NPM_CI_ATTEMPTS" ]; then \
|
|
exit "$status" ; \
|
|
fi ; \
|
|
echo "npm ci --no-audit failed with exit code $status; retrying attempt $((attempt + 1))/$NPM_CI_ATTEMPTS" ; \
|
|
attempt=$((attempt + 1)) ; \
|
|
npm cache clean --force || true ; \
|
|
sleep 10 ; \
|
|
done
|
|
|
|
COPY --chown=node:node . .
|
|
|
|
RUN \
|
|
# React client build with configurable memory
|
|
NODE_OPTIONS="--max-old-space-size=${NODE_MAX_OLD_SPACE_SIZE}" npm run frontend; \
|
|
npm prune --production; \
|
|
npm cache clean --force
|
|
|
|
# Optional build metadata surfaced in Settings -> About for support triage.
|
|
# Declared here (after the heavy install/build steps) so that commit/date
|
|
# changing on every CI run does not bust the cache for dependency install
|
|
# and frontend build layers. When unset, the backend falls back to local
|
|
# git resolution (if .git is present), and finally to empty values.
|
|
ARG BUILD_COMMIT=
|
|
ARG BUILD_BRANCH=
|
|
ARG BUILD_DATE=
|
|
ENV BUILD_COMMIT=${BUILD_COMMIT}
|
|
ENV BUILD_BRANCH=${BUILD_BRANCH}
|
|
ENV BUILD_DATE=${BUILD_DATE}
|
|
|
|
# Node API setup
|
|
EXPOSE 3080
|
|
ENV HOST=0.0.0.0
|
|
CMD ["npm", "run", "backend"]
|
|
|
|
# Optional: for client with nginx routing
|
|
# FROM nginx:stable-alpine AS nginx-client
|
|
# WORKDIR /usr/share/nginx/html
|
|
# COPY --from=node /app/client/dist /usr/share/nginx/html
|
|
# COPY client/nginx.conf /etc/nginx/conf.d/default.conf
|
|
# ENTRYPOINT ["nginx", "-g", "daemon off;"]
|