rm-dev-null commited on
Commit
01bf9f4
·
verified ·
1 Parent(s): 880b7b9

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +1 -220
Dockerfile CHANGED
@@ -1,220 +1 @@
1
- ## Base image for all building stages
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