2024-12-13 14:25:55 +00:00
|
|
|
## Set global build ENV
|
|
|
|
|
ARG NODEJS_VERSION="22"
|
|
|
|
|
|
2024-09-29 03:31:55 +00:00
|
|
|
## Base image for all building stages
|
2024-12-13 14:25:55 +00:00
|
|
|
FROM node:${NODEJS_VERSION}-slim AS base
|
2023-10-11 05:05:24 +00:00
|
|
|
|
2024-08-03 11:35:09 +00:00
|
|
|
ARG USE_CN_MIRROR
|
|
|
|
|
|
2024-09-19 12:19:37 +00:00
|
|
|
ENV DEBIAN_FRONTEND="noninteractive"
|
|
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
RUN \
|
2024-08-03 11:35:09 +00:00
|
|
|
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
|
|
|
|
|
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
|
2024-09-19 12:19:37 +00:00
|
|
|
sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" "/etc/apt/sources.list.d/debian.sources"; \
|
2024-08-03 11:35:09 +00:00
|
|
|
fi \
|
2024-09-29 03:31:55 +00:00
|
|
|
# Add required package
|
2024-09-19 12:19:37 +00:00
|
|
|
&& apt update \
|
2024-09-29 03:31:55 +00:00
|
|
|
&& apt install ca-certificates proxychains-ng -qy \
|
|
|
|
|
# Prepare required package to distroless
|
|
|
|
|
&& mkdir -p /distroless/bin /distroless/etc /distroless/etc/ssl/certs /distroless/lib \
|
|
|
|
|
# Copy proxychains to distroless
|
|
|
|
|
&& cp /usr/lib/$(arch)-linux-gnu/libproxychains.so.4 /distroless/lib/libproxychains.so.4 \
|
|
|
|
|
&& cp /usr/lib/$(arch)-linux-gnu/libdl.so.2 /distroless/lib/libdl.so.2 \
|
|
|
|
|
&& cp /usr/bin/proxychains4 /distroless/bin/proxychains \
|
|
|
|
|
&& cp /etc/proxychains4.conf /distroless/etc/proxychains4.conf \
|
|
|
|
|
# Copy node to distroless
|
|
|
|
|
&& cp /usr/lib/$(arch)-linux-gnu/libstdc++.so.6 /distroless/lib/libstdc++.so.6 \
|
|
|
|
|
&& cp /usr/lib/$(arch)-linux-gnu/libgcc_s.so.1 /distroless/lib/libgcc_s.so.1 \
|
|
|
|
|
&& cp /usr/local/bin/node /distroless/bin/node \
|
|
|
|
|
# Copy CA certificates to distroless
|
|
|
|
|
&& cp /etc/ssl/certs/ca-certificates.crt /distroless/etc/ssl/certs/ca-certificates.crt \
|
2024-09-19 12:19:37 +00:00
|
|
|
# Cleanup temp files
|
|
|
|
|
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
|
2023-12-11 00:58:41 +00:00
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
## Builder image, install all the dependencies and build the app
|
2023-10-11 05:05:24 +00:00
|
|
|
FROM base AS builder
|
2023-10-10 19:26:19 +00:00
|
|
|
|
2024-08-03 11:35:09 +00:00
|
|
|
ARG USE_CN_MIRROR
|
2024-10-12 02:48:48 +00:00
|
|
|
ARG NEXT_PUBLIC_BASE_PATH
|
|
|
|
|
ARG NEXT_PUBLIC_SENTRY_DSN
|
|
|
|
|
ARG NEXT_PUBLIC_ANALYTICS_POSTHOG
|
|
|
|
|
ARG NEXT_PUBLIC_POSTHOG_HOST
|
|
|
|
|
ARG NEXT_PUBLIC_POSTHOG_KEY
|
|
|
|
|
ARG NEXT_PUBLIC_ANALYTICS_UMAMI
|
|
|
|
|
ARG NEXT_PUBLIC_UMAMI_SCRIPT_URL
|
|
|
|
|
ARG NEXT_PUBLIC_UMAMI_WEBSITE_ID
|
2024-05-06 02:07:57 +00:00
|
|
|
|
2024-10-12 02:48:48 +00:00
|
|
|
ENV NEXT_PUBLIC_BASE_PATH="${NEXT_PUBLIC_BASE_PATH}"
|
2024-05-06 02:07:57 +00:00
|
|
|
|
|
|
|
|
# Sentry
|
2024-10-12 02:48:48 +00:00
|
|
|
ENV NEXT_PUBLIC_SENTRY_DSN="${NEXT_PUBLIC_SENTRY_DSN}" \
|
2024-07-23 14:20:22 +00:00
|
|
|
SENTRY_ORG="" \
|
|
|
|
|
SENTRY_PROJECT=""
|
2024-05-06 02:07:57 +00:00
|
|
|
|
|
|
|
|
# Posthog
|
2024-10-12 02:48:48 +00:00
|
|
|
ENV NEXT_PUBLIC_ANALYTICS_POSTHOG="${NEXT_PUBLIC_ANALYTICS_POSTHOG}" \
|
|
|
|
|
NEXT_PUBLIC_POSTHOG_HOST="${NEXT_PUBLIC_POSTHOG_HOST}" \
|
|
|
|
|
NEXT_PUBLIC_POSTHOG_KEY="${NEXT_PUBLIC_POSTHOG_KEY}"
|
2024-05-06 02:07:57 +00:00
|
|
|
|
|
|
|
|
# Umami
|
2024-10-12 02:48:48 +00:00
|
|
|
ENV NEXT_PUBLIC_ANALYTICS_UMAMI="${NEXT_PUBLIC_ANALYTICS_UMAMI}" \
|
|
|
|
|
NEXT_PUBLIC_UMAMI_SCRIPT_URL="${NEXT_PUBLIC_UMAMI_SCRIPT_URL}" \
|
|
|
|
|
NEXT_PUBLIC_UMAMI_WEBSITE_ID="${NEXT_PUBLIC_UMAMI_WEBSITE_ID}"
|
2024-05-06 02:07:57 +00:00
|
|
|
|
2024-05-10 09:47:31 +00:00
|
|
|
# Node
|
2024-07-23 14:20:22 +00:00
|
|
|
ENV NODE_OPTIONS="--max-old-space-size=8192"
|
2024-05-06 02:07:57 +00:00
|
|
|
|
2023-10-10 19:26:19 +00:00
|
|
|
WORKDIR /app
|
|
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
COPY package.json ./
|
|
|
|
|
COPY .npmrc ./
|
|
|
|
|
|
|
|
|
|
RUN \
|
2024-08-03 11:35:09 +00:00
|
|
|
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
|
|
|
|
|
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
|
2024-07-23 14:20:22 +00:00
|
|
|
export SENTRYCLI_CDNURL="https://npmmirror.com/mirrors/sentry-cli"; \
|
|
|
|
|
npm config set registry "https://registry.npmmirror.com/"; \
|
2024-09-29 03:31:55 +00:00
|
|
|
echo 'canvas_binary_host_mirror=https://npmmirror.com/mirrors/canvas' >> .npmrc; \
|
2024-07-23 14:20:22 +00:00
|
|
|
fi \
|
|
|
|
|
# Set the registry for corepack
|
|
|
|
|
&& export COREPACK_NPM_REGISTRY=$(npm config get registry | sed 's/\/$//') \
|
2025-02-03 06:39:59 +00:00
|
|
|
# Update corepack to latest (nodejs/corepack#612)
|
|
|
|
|
&& npm i -g corepack@latest \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Enable corepack
|
|
|
|
|
&& corepack enable \
|
|
|
|
|
# Use pnpm for corepack
|
2025-02-03 06:39:59 +00:00
|
|
|
&& corepack use $(sed -n 's/.*"packageManager": "\(.*\)".*/\1/p' package.json) \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Install the dependencies
|
|
|
|
|
&& pnpm i \
|
|
|
|
|
# Add sharp dependencies
|
2024-09-09 06:23:02 +00:00
|
|
|
&& mkdir -p /deps \
|
|
|
|
|
&& pnpm add sharp --prefix /deps
|
2023-10-10 19:26:19 +00:00
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
COPY . .
|
2023-10-10 19:26:19 +00:00
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
# run build standalone for docker version
|
|
|
|
|
RUN npm run build:docker
|
2023-10-10 19:26:19 +00:00
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
## Application image, copy all the files for production
|
2024-09-29 03:31:55 +00:00
|
|
|
FROM busybox:latest AS app
|
|
|
|
|
|
|
|
|
|
COPY --from=base /distroless/ /
|
2024-07-23 14:20:22 +00:00
|
|
|
|
|
|
|
|
COPY --from=builder /app/public /app/public
|
2023-10-10 19:26:19 +00:00
|
|
|
|
|
|
|
|
# Automatically leverage output traces to reduce image size
|
|
|
|
|
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
2024-07-23 14:20:22 +00:00
|
|
|
COPY --from=builder /app/.next/standalone /app/
|
|
|
|
|
COPY --from=builder /app/.next/static /app/.next/static
|
2024-09-09 06:23:02 +00:00
|
|
|
COPY --from=builder /deps/node_modules/.pnpm /app/node_modules/.pnpm
|
2023-10-10 19:26:19 +00:00
|
|
|
|
2024-09-29 03:31:55 +00:00
|
|
|
# Copy server launcher
|
|
|
|
|
COPY --from=builder /app/scripts/serverLauncher/startServer.js /app/startServer.js
|
|
|
|
|
|
|
|
|
|
RUN \
|
|
|
|
|
# Add nextjs:nodejs to run the app
|
|
|
|
|
addgroup -S -g 1001 nodejs \
|
|
|
|
|
&& adduser -D -G nodejs -H -S -h /app -u 1001 nextjs \
|
|
|
|
|
# Set permission for nextjs:nodejs
|
|
|
|
|
&& chown -R nextjs:nodejs /app /etc/proxychains4.conf
|
|
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
## Production image, copy all the files and run next
|
2024-09-29 03:31:55 +00:00
|
|
|
FROM scratch
|
2023-10-10 19:26:19 +00:00
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
# Copy all the files from app, set the correct permission for prerender cache
|
2024-09-29 03:31:55 +00:00
|
|
|
COPY --from=app / /
|
2024-07-23 14:20:22 +00:00
|
|
|
|
2024-09-19 12:19:37 +00:00
|
|
|
ENV NODE_ENV="production" \
|
2024-10-01 04:57:39 +00:00
|
|
|
NODE_OPTIONS="--dns-result-order=ipv4first --use-openssl-ca" \
|
2024-09-30 12:38:22 +00:00
|
|
|
NODE_EXTRA_CA_CERTS="" \
|
|
|
|
|
NODE_TLS_REJECT_UNAUTHORIZED="" \
|
|
|
|
|
SSL_CERT_DIR="/etc/ssl/certs/ca-certificates.crt"
|
2023-10-10 19:26:19 +00:00
|
|
|
|
|
|
|
|
# set hostname to localhost
|
2024-07-23 14:20:22 +00:00
|
|
|
ENV HOSTNAME="0.0.0.0" \
|
|
|
|
|
PORT="3210"
|
2023-10-10 19:26:19 +00:00
|
|
|
|
2023-11-27 04:23:58 +00:00
|
|
|
# General Variables
|
2024-07-23 14:20:22 +00:00
|
|
|
ENV ACCESS_CODE="" \
|
|
|
|
|
API_KEY_SELECT_MODE="" \
|
2024-08-03 11:35:09 +00:00
|
|
|
DEFAULT_AGENT_CONFIG="" \
|
|
|
|
|
SYSTEM_AGENT="" \
|
|
|
|
|
FEATURE_FLAGS="" \
|
|
|
|
|
PROXY_URL=""
|
2024-07-23 14:20:22 +00:00
|
|
|
|
|
|
|
|
# Model Variables
|
|
|
|
|
ENV \
|
2024-09-18 17:42:40 +00:00
|
|
|
# AI21
|
2024-10-25 12:32:34 +00:00
|
|
|
AI21_API_KEY="" AI21_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Ai360
|
2024-10-25 12:32:34 +00:00
|
|
|
AI360_API_KEY="" AI360_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Anthropic
|
2024-10-25 12:32:34 +00:00
|
|
|
ANTHROPIC_API_KEY="" ANTHROPIC_MODEL_LIST="" ANTHROPIC_PROXY_URL="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Amazon Bedrock
|
2024-09-06 14:17:31 +00:00
|
|
|
AWS_ACCESS_KEY_ID="" AWS_SECRET_ACCESS_KEY="" AWS_REGION="" AWS_BEDROCK_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Azure OpenAI
|
|
|
|
|
AZURE_API_KEY="" AZURE_API_VERSION="" AZURE_ENDPOINT="" AZURE_MODEL_LIST="" \
|
|
|
|
|
# Baichuan
|
2024-10-25 12:32:34 +00:00
|
|
|
BAICHUAN_API_KEY="" BAICHUAN_MODEL_LIST="" \
|
2024-11-15 14:14:39 +00:00
|
|
|
# Cloudflare
|
|
|
|
|
CLOUDFLARE_API_KEY="" CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID="" CLOUDFLARE_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# DeepSeek
|
2024-10-25 12:32:34 +00:00
|
|
|
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
|
2024-09-10 16:14:18 +00:00
|
|
|
# Fireworks AI
|
|
|
|
|
FIREWORKSAI_API_KEY="" FIREWORKSAI_MODEL_LIST="" \
|
2024-11-25 02:22:41 +00:00
|
|
|
# Gitee AI
|
|
|
|
|
GITEE_AI_API_KEY="" GITEE_AI_MODEL_LIST="" \
|
2024-09-19 12:19:37 +00:00
|
|
|
# GitHub
|
|
|
|
|
GITHUB_TOKEN="" GITHUB_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Google
|
2024-10-25 12:32:34 +00:00
|
|
|
GOOGLE_API_KEY="" GOOGLE_MODEL_LIST="" GOOGLE_PROXY_URL="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Groq
|
2024-09-01 14:41:35 +00:00
|
|
|
GROQ_API_KEY="" GROQ_MODEL_LIST="" GROQ_PROXY_URL="" \
|
2024-12-13 14:25:55 +00:00
|
|
|
# Higress
|
|
|
|
|
HIGRESS_API_KEY="" HIGRESS_MODEL_LIST="" HIGRESS_PROXY_URL="" \
|
2024-10-25 12:32:34 +00:00
|
|
|
# HuggingFace
|
|
|
|
|
HUGGINGFACE_API_KEY="" HUGGINGFACE_MODEL_LIST="" HUGGINGFACE_PROXY_URL="" \
|
2024-09-27 07:40:02 +00:00
|
|
|
# Hunyuan
|
|
|
|
|
HUNYUAN_API_KEY="" HUNYUAN_MODEL_LIST="" \
|
2024-11-19 02:46:07 +00:00
|
|
|
# InternLM
|
|
|
|
|
INTERNLM_API_KEY="" INTERNLM_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Minimax
|
2024-10-25 12:32:34 +00:00
|
|
|
MINIMAX_API_KEY="" MINIMAX_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Mistral
|
2024-10-25 12:32:34 +00:00
|
|
|
MISTRAL_API_KEY="" MISTRAL_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Moonshot
|
2024-10-25 12:32:34 +00:00
|
|
|
MOONSHOT_API_KEY="" MOONSHOT_MODEL_LIST="" MOONSHOT_PROXY_URL="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Novita
|
2024-09-01 10:10:47 +00:00
|
|
|
NOVITA_API_KEY="" NOVITA_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Ollama
|
2024-11-15 14:14:39 +00:00
|
|
|
ENABLED_OLLAMA="" OLLAMA_MODEL_LIST="" OLLAMA_PROXY_URL="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# OpenAI
|
|
|
|
|
OPENAI_API_KEY="" OPENAI_MODEL_LIST="" OPENAI_PROXY_URL="" \
|
|
|
|
|
# OpenRouter
|
|
|
|
|
OPENROUTER_API_KEY="" OPENROUTER_MODEL_LIST="" \
|
|
|
|
|
# Perplexity
|
2024-10-25 12:32:34 +00:00
|
|
|
PERPLEXITY_API_KEY="" PERPLEXITY_MODEL_LIST="" PERPLEXITY_PROXY_URL="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Qwen
|
2024-12-01 03:58:14 +00:00
|
|
|
QWEN_API_KEY="" QWEN_MODEL_LIST="" QWEN_PROXY_URL="" \
|
✨ feat: add SenseNova (商汤) model provider (#4162)
* ✨ feat: add SenseCore (商汤) model provider
* 💄 style: update model list, fix `frequency_penalty`, `temperature`, `top_p` value range
* 🔨 chore: add jwt api token calculate
* 🔨 chore: remove `SENSECORE_API_KEY` ENV
* Update authToken.ts
* 🔨 chore: add debug logs
* ♻️ refactor: rollback changes, remove JWT
* 👷 build: add docker ENV, `SENSECORE_API_KEY` & `SENSECORE_MODEL_LIST`
* 🔨 chore: cleanup
* 🔨 chore: cleanup
* 🔨 chore: rename `sensecore` to `sensenova`
* 💄 style: update model list
* 💄 style: sort model list
* ✨ feat: add jwt token generator for SenseNova
* ♻️ refactor: support two different type of `API TOKEN`
* Update authToken.ts
* 💄 style: add custom form for SenseNova
* 💄 style: fix custom form calling & adjust icon size
* 🐛 fix: fix CI error
* 💄 style: adjust icon size
* 🐛 fix: fix `sensenovaAccessKeySecret` not store in key
* 🐛 fix: try to fix loading key from ENV
* 🐛 fix: try to fix loading key from ENV
* 🐛 fix: seems be the root cause, typo
* 💄 style: remove title
* 🐛 fix: fix build error
* 🔨 chore: add i18n
* 🐛 fix: fix PR conflicts
* 🐛 fix: fix route ci error
* 🐛 fix: fix PR conflicts
* ♻️ refactor: move `generateJwtTokenSenseNova` to `LobeSenseNovaAI.generateJWTToken`
* Update index.ts
* rollback changes, submit wrong branch
* 🐛 fix: fix CI error, refactor the chat webapi
* ♻️ refactor: replace deprecated module `crypto-js` to `crypto-es`
* Revert "♻️ refactor: replace deprecated module `crypto-js` to `crypto-es`"
This reverts commit 9655c9212109a8b6b7c439062627f36342f20415.
* ♻️ refactor: replace `crypto-js` to `jose`, only support ENV now (Part 1)
* Revert "♻️ refactor: replace `crypto-js` to `jose`, only support ENV now (Part 1)"
* ♻️ refactor: using `jose` to generate the APIToken
* 🔨 chore: remove debug code
* 🔨 chore: cleanup package, remove `crypto-js`
* 🔨 chore: add unit test
* 🔨 chore: optimize jwt generate process
2024-10-25 13:04:26 +00:00
|
|
|
# SenseNova
|
2024-12-25 03:40:20 +00:00
|
|
|
SENSENOVA_API_KEY="" SENSENOVA_MODEL_LIST="" \
|
2024-08-18 03:16:10 +00:00
|
|
|
# SiliconCloud
|
|
|
|
|
SILICONCLOUD_API_KEY="" SILICONCLOUD_MODEL_LIST="" SILICONCLOUD_PROXY_URL="" \
|
2024-09-10 16:14:05 +00:00
|
|
|
# Spark
|
2024-10-25 12:32:34 +00:00
|
|
|
SPARK_API_KEY="" SPARK_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Stepfun
|
2024-10-25 12:32:34 +00:00
|
|
|
STEPFUN_API_KEY="" STEPFUN_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Taichu
|
2024-10-25 12:32:34 +00:00
|
|
|
TAICHU_API_KEY="" TAICHU_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# TogetherAI
|
|
|
|
|
TOGETHERAI_API_KEY="" TOGETHERAI_MODEL_LIST="" \
|
2024-08-30 13:54:21 +00:00
|
|
|
# Upstage
|
2024-10-25 12:32:34 +00:00
|
|
|
UPSTAGE_API_KEY="" UPSTAGE_MODEL_LIST="" \
|
2024-09-30 12:38:22 +00:00
|
|
|
# Wenxin
|
2024-10-25 12:32:34 +00:00
|
|
|
WENXIN_ACCESS_KEY="" WENXIN_SECRET_KEY="" WENXIN_MODEL_LIST="" \
|
2024-11-11 17:51:18 +00:00
|
|
|
# xAI
|
2024-11-24 15:22:37 +00:00
|
|
|
XAI_API_KEY="" XAI_MODEL_LIST="" XAI_PROXY_URL="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# 01.AI
|
2024-09-01 04:26:29 +00:00
|
|
|
ZEROONE_API_KEY="" ZEROONE_MODEL_LIST="" \
|
2024-07-23 14:20:22 +00:00
|
|
|
# Zhipu
|
2024-12-13 14:25:55 +00:00
|
|
|
ZHIPU_API_KEY="" ZHIPU_MODEL_LIST=""
|
2024-02-06 08:03:38 +00:00
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
USER nextjs
|
2024-05-14 02:53:08 +00:00
|
|
|
|
2024-07-23 14:20:22 +00:00
|
|
|
EXPOSE 3210/tcp
|
2024-06-04 03:38:56 +00:00
|
|
|
|
2024-09-29 03:31:55 +00:00
|
|
|
ENTRYPOINT ["/bin/node"]
|
|
|
|
|
|
|
|
|
|
CMD ["/app/startServer.js"]
|