Spaces:
Sleeping
Sleeping
Update Dockerfile
Browse files- Dockerfile +1 -220
Dockerfile
CHANGED
|
@@ -1,220 +1 @@
|
|
| 1 |
-
|
| 2 |
-
FROM node:20-slim AS base
|
| 3 |
-
|
| 4 |
-
ARG USE_CN_MIRROR
|
| 5 |
-
|
| 6 |
-
ENV DEBIAN_FRONTEND="noninteractive"
|
| 7 |
-
|
| 8 |
-
RUN \
|
| 9 |
-
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
|
| 10 |
-
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
|
| 11 |
-
sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" "/etc/apt/sources.list.d/debian.sources"; \
|
| 12 |
-
fi \
|
| 13 |
-
# Add required package
|
| 14 |
-
&& apt update \
|
| 15 |
-
&& apt install ca-certificates proxychains-ng -qy \
|
| 16 |
-
# Prepare required package to distroless
|
| 17 |
-
&& mkdir -p /distroless/bin /distroless/etc /distroless/etc/ssl/certs /distroless/lib \
|
| 18 |
-
# Copy proxychains to distroless
|
| 19 |
-
&& cp /usr/lib/$(arch)-linux-gnu/libproxychains.so.4 /distroless/lib/libproxychains.so.4 \
|
| 20 |
-
&& cp /usr/lib/$(arch)-linux-gnu/libdl.so.2 /distroless/lib/libdl.so.2 \
|
| 21 |
-
&& cp /usr/bin/proxychains4 /distroless/bin/proxychains \
|
| 22 |
-
&& cp /etc/proxychains4.conf /distroless/etc/proxychains4.conf \
|
| 23 |
-
# Copy node to distroless
|
| 24 |
-
&& cp /usr/lib/$(arch)-linux-gnu/libstdc++.so.6 /distroless/lib/libstdc++.so.6 \
|
| 25 |
-
&& cp /usr/lib/$(arch)-linux-gnu/libgcc_s.so.1 /distroless/lib/libgcc_s.so.1 \
|
| 26 |
-
&& cp /usr/local/bin/node /distroless/bin/node \
|
| 27 |
-
# Copy CA certificates to distroless
|
| 28 |
-
&& cp /etc/ssl/certs/ca-certificates.crt /distroless/etc/ssl/certs/ca-certificates.crt \
|
| 29 |
-
# Cleanup temp files
|
| 30 |
-
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
|
| 31 |
-
|
| 32 |
-
## Builder image, install all the dependencies and build the app
|
| 33 |
-
FROM base AS builder
|
| 34 |
-
|
| 35 |
-
ARG USE_CN_MIRROR
|
| 36 |
-
ARG NEXT_PUBLIC_BASE_PATH
|
| 37 |
-
ARG NEXT_PUBLIC_SENTRY_DSN
|
| 38 |
-
ARG NEXT_PUBLIC_ANALYTICS_POSTHOG
|
| 39 |
-
ARG NEXT_PUBLIC_POSTHOG_HOST
|
| 40 |
-
ARG NEXT_PUBLIC_POSTHOG_KEY
|
| 41 |
-
ARG NEXT_PUBLIC_ANALYTICS_UMAMI
|
| 42 |
-
ARG NEXT_PUBLIC_UMAMI_SCRIPT_URL
|
| 43 |
-
ARG NEXT_PUBLIC_UMAMI_WEBSITE_ID
|
| 44 |
-
|
| 45 |
-
ENV NEXT_PUBLIC_BASE_PATH="${NEXT_PUBLIC_BASE_PATH}"
|
| 46 |
-
|
| 47 |
-
# Sentry
|
| 48 |
-
ENV NEXT_PUBLIC_SENTRY_DSN="${NEXT_PUBLIC_SENTRY_DSN}" \
|
| 49 |
-
SENTRY_ORG="" \
|
| 50 |
-
SENTRY_PROJECT=""
|
| 51 |
-
|
| 52 |
-
# Posthog
|
| 53 |
-
ENV NEXT_PUBLIC_ANALYTICS_POSTHOG="${NEXT_PUBLIC_ANALYTICS_POSTHOG}" \
|
| 54 |
-
NEXT_PUBLIC_POSTHOG_HOST="${NEXT_PUBLIC_POSTHOG_HOST}" \
|
| 55 |
-
NEXT_PUBLIC_POSTHOG_KEY="${NEXT_PUBLIC_POSTHOG_KEY}"
|
| 56 |
-
|
| 57 |
-
# Umami
|
| 58 |
-
ENV NEXT_PUBLIC_ANALYTICS_UMAMI="${NEXT_PUBLIC_ANALYTICS_UMAMI}" \
|
| 59 |
-
NEXT_PUBLIC_UMAMI_SCRIPT_URL="${NEXT_PUBLIC_UMAMI_SCRIPT_URL}" \
|
| 60 |
-
NEXT_PUBLIC_UMAMI_WEBSITE_ID="${NEXT_PUBLIC_UMAMI_WEBSITE_ID}"
|
| 61 |
-
|
| 62 |
-
# Node
|
| 63 |
-
ENV NODE_OPTIONS="--max-old-space-size=8192"
|
| 64 |
-
|
| 65 |
-
WORKDIR /app
|
| 66 |
-
|
| 67 |
-
COPY package.json ./
|
| 68 |
-
COPY .npmrc ./
|
| 69 |
-
|
| 70 |
-
RUN \
|
| 71 |
-
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
|
| 72 |
-
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
|
| 73 |
-
export SENTRYCLI_CDNURL="https://npmmirror.com/mirrors/sentry-cli"; \
|
| 74 |
-
npm config set registry "https://registry.npmmirror.com/"; \
|
| 75 |
-
echo 'canvas_binary_host_mirror=https://npmmirror.com/mirrors/canvas' >> .npmrc; \
|
| 76 |
-
fi \
|
| 77 |
-
# Set the registry for corepack
|
| 78 |
-
&& export COREPACK_NPM_REGISTRY=$(npm config get registry | sed 's/\/$//') \
|
| 79 |
-
# Enable corepack
|
| 80 |
-
&& corepack enable \
|
| 81 |
-
# Use pnpm for corepack
|
| 82 |
-
&& corepack use pnpm \
|
| 83 |
-
# Install the dependencies
|
| 84 |
-
&& pnpm i \
|
| 85 |
-
# Add sharp dependencies
|
| 86 |
-
&& mkdir -p /deps \
|
| 87 |
-
&& pnpm add sharp --prefix /deps
|
| 88 |
-
|
| 89 |
-
COPY . .
|
| 90 |
-
|
| 91 |
-
# run build standalone for docker version
|
| 92 |
-
RUN npm run build:docker
|
| 93 |
-
|
| 94 |
-
## Application image, copy all the files for production
|
| 95 |
-
FROM busybox:latest AS app
|
| 96 |
-
|
| 97 |
-
COPY --from=base /distroless/ /
|
| 98 |
-
|
| 99 |
-
COPY --from=builder /app/public /app/public
|
| 100 |
-
|
| 101 |
-
# Automatically leverage output traces to reduce image size
|
| 102 |
-
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
| 103 |
-
COPY --from=builder /app/.next/standalone /app/
|
| 104 |
-
COPY --from=builder /app/.next/static /app/.next/static
|
| 105 |
-
COPY --from=builder /deps/node_modules/.pnpm /app/node_modules/.pnpm
|
| 106 |
-
|
| 107 |
-
# Copy server launcher
|
| 108 |
-
COPY --from=builder /app/scripts/serverLauncher/startServer.js /app/startServer.js
|
| 109 |
-
|
| 110 |
-
RUN \
|
| 111 |
-
# Add nextjs:nodejs to run the app
|
| 112 |
-
addgroup -S -g 1001 nodejs \
|
| 113 |
-
&& adduser -D -G nodejs -H -S -h /app -u 1001 nextjs \
|
| 114 |
-
# Set permission for nextjs:nodejs
|
| 115 |
-
&& chown -R nextjs:nodejs /app /etc/proxychains4.conf
|
| 116 |
-
|
| 117 |
-
## Production image, copy all the files and run next
|
| 118 |
-
FROM scratch
|
| 119 |
-
|
| 120 |
-
# Copy all the files from app, set the correct permission for prerender cache
|
| 121 |
-
COPY --from=app / /
|
| 122 |
-
|
| 123 |
-
ENV NODE_ENV="production" \
|
| 124 |
-
NODE_OPTIONS="--dns-result-order=ipv4first --use-openssl-ca" \
|
| 125 |
-
NODE_EXTRA_CA_CERTS="" \
|
| 126 |
-
NODE_TLS_REJECT_UNAUTHORIZED="" \
|
| 127 |
-
SSL_CERT_DIR="/etc/ssl/certs/ca-certificates.crt"
|
| 128 |
-
|
| 129 |
-
# set hostname to localhost
|
| 130 |
-
ENV HOSTNAME="0.0.0.0" \
|
| 131 |
-
PORT="7860"
|
| 132 |
-
|
| 133 |
-
# General Variables
|
| 134 |
-
ENV ACCESS_CODE="" \
|
| 135 |
-
API_KEY_SELECT_MODE="" \
|
| 136 |
-
DEFAULT_AGENT_CONFIG="" \
|
| 137 |
-
SYSTEM_AGENT="" \
|
| 138 |
-
FEATURE_FLAGS="" \
|
| 139 |
-
PROXY_URL=""
|
| 140 |
-
|
| 141 |
-
# Model Variables
|
| 142 |
-
ENV \
|
| 143 |
-
# AI21
|
| 144 |
-
AI21_API_KEY="" AI21_MODEL_LIST="" \
|
| 145 |
-
# Ai360
|
| 146 |
-
AI360_API_KEY="" AI360_MODEL_LIST="" \
|
| 147 |
-
# Anthropic
|
| 148 |
-
ANTHROPIC_API_KEY="" ANTHROPIC_MODEL_LIST="" ANTHROPIC_PROXY_URL="" \
|
| 149 |
-
# Amazon Bedrock
|
| 150 |
-
AWS_ACCESS_KEY_ID="" AWS_SECRET_ACCESS_KEY="" AWS_REGION="" AWS_BEDROCK_MODEL_LIST="" \
|
| 151 |
-
# Azure OpenAI
|
| 152 |
-
AZURE_API_KEY="" AZURE_API_VERSION="" AZURE_ENDPOINT="" AZURE_MODEL_LIST="" \
|
| 153 |
-
# Baichuan
|
| 154 |
-
BAICHUAN_API_KEY="" BAICHUAN_MODEL_LIST="" \
|
| 155 |
-
# Cloudflare
|
| 156 |
-
CLOUDFLARE_API_KEY="" CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID="" CLOUDFLARE_MODEL_LIST="" \
|
| 157 |
-
# DeepSeek
|
| 158 |
-
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
|
| 159 |
-
# Fireworks AI
|
| 160 |
-
FIREWORKSAI_API_KEY="" FIREWORKSAI_MODEL_LIST="" \
|
| 161 |
-
# GitHub
|
| 162 |
-
GITHUB_TOKEN="" GITHUB_MODEL_LIST="" \
|
| 163 |
-
# Google
|
| 164 |
-
GOOGLE_API_KEY="" GOOGLE_MODEL_LIST="" GOOGLE_PROXY_URL="" \
|
| 165 |
-
# Groq
|
| 166 |
-
GROQ_API_KEY="" GROQ_MODEL_LIST="" GROQ_PROXY_URL="" \
|
| 167 |
-
# HuggingFace
|
| 168 |
-
HUGGINGFACE_API_KEY="" HUGGINGFACE_MODEL_LIST="" HUGGINGFACE_PROXY_URL="" \
|
| 169 |
-
# Hunyuan
|
| 170 |
-
HUNYUAN_API_KEY="" HUNYUAN_MODEL_LIST="" \
|
| 171 |
-
# InternLM
|
| 172 |
-
INTERNLM_API_KEY="" INTERNLM_MODEL_LIST="" \
|
| 173 |
-
# Minimax
|
| 174 |
-
MINIMAX_API_KEY="" MINIMAX_MODEL_LIST="" \
|
| 175 |
-
# Mistral
|
| 176 |
-
MISTRAL_API_KEY="" MISTRAL_MODEL_LIST="" \
|
| 177 |
-
# Moonshot
|
| 178 |
-
MOONSHOT_API_KEY="" MOONSHOT_MODEL_LIST="" MOONSHOT_PROXY_URL="" \
|
| 179 |
-
# Novita
|
| 180 |
-
NOVITA_API_KEY="" NOVITA_MODEL_LIST="" \
|
| 181 |
-
# Ollama
|
| 182 |
-
ENABLED_OLLAMA="" OLLAMA_MODEL_LIST="" OLLAMA_PROXY_URL="" \
|
| 183 |
-
# OpenAI
|
| 184 |
-
OPENAI_API_KEY="" OPENAI_MODEL_LIST="" OPENAI_PROXY_URL="" \
|
| 185 |
-
# OpenRouter
|
| 186 |
-
OPENROUTER_API_KEY="" OPENROUTER_MODEL_LIST="" \
|
| 187 |
-
# Perplexity
|
| 188 |
-
PERPLEXITY_API_KEY="" PERPLEXITY_MODEL_LIST="" PERPLEXITY_PROXY_URL="" \
|
| 189 |
-
# Qwen
|
| 190 |
-
QWEN_API_KEY="" QWEN_MODEL_LIST="" \
|
| 191 |
-
# SenseNova
|
| 192 |
-
SENSENOVA_ACCESS_KEY_ID="" SENSENOVA_ACCESS_KEY_SECRET="" SENSENOVA_MODEL_LIST="" \
|
| 193 |
-
# SiliconCloud
|
| 194 |
-
SILICONCLOUD_API_KEY="" SILICONCLOUD_MODEL_LIST="" SILICONCLOUD_PROXY_URL="" \
|
| 195 |
-
# Spark
|
| 196 |
-
SPARK_API_KEY="" SPARK_MODEL_LIST="" \
|
| 197 |
-
# Stepfun
|
| 198 |
-
STEPFUN_API_KEY="" STEPFUN_MODEL_LIST="" \
|
| 199 |
-
# Taichu
|
| 200 |
-
TAICHU_API_KEY="" TAICHU_MODEL_LIST="" \
|
| 201 |
-
# TogetherAI
|
| 202 |
-
TOGETHERAI_API_KEY="" TOGETHERAI_MODEL_LIST="" \
|
| 203 |
-
# Upstage
|
| 204 |
-
UPSTAGE_API_KEY="" UPSTAGE_MODEL_LIST="" \
|
| 205 |
-
# Wenxin
|
| 206 |
-
WENXIN_ACCESS_KEY="" WENXIN_SECRET_KEY="" WENXIN_MODEL_LIST="" \
|
| 207 |
-
# xAI
|
| 208 |
-
XAI_API_KEY="" XAI_MODEL_LIST="" \
|
| 209 |
-
# 01.AI
|
| 210 |
-
ZEROONE_API_KEY="" ZEROONE_MODEL_LIST="" \
|
| 211 |
-
# Zhipu
|
| 212 |
-
ZHIPU_API_KEY="" ZHIPU_MODEL_LIST=""
|
| 213 |
-
|
| 214 |
-
USER nextjs
|
| 215 |
-
|
| 216 |
-
EXPOSE 7860/tcp
|
| 217 |
-
|
| 218 |
-
ENTRYPOINT ["/bin/node"]
|
| 219 |
-
|
| 220 |
-
CMD ["/app/startServer.js"]
|
|
|
|
| 1 |
+
FROM lobehub/lobe-chat:latest
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|