|
FROM node:18-alpine AS base |
|
|
|
FROM base AS deps |
|
|
|
RUN apk add --no-cache libc6-compat |
|
|
|
WORKDIR /app |
|
|
|
COPY package.json yarn.lock ./ |
|
|
|
RUN yarn config set registry 'https://registry.npm.taobao.org' |
|
RUN yarn install |
|
|
|
FROM base AS builder |
|
|
|
RUN apk update && apk add --no-cache git |
|
|
|
ENV OPENAI_API_KEY="" |
|
ENV CODE="" |
|
|
|
WORKDIR /app |
|
COPY --from=deps /app/node_modules ./node_modules |
|
COPY . . |
|
|
|
RUN yarn build |
|
|
|
FROM base AS runner |
|
WORKDIR /app |
|
|
|
RUN apk add proxychains-ng |
|
|
|
ENV PROXY_URL="" |
|
ENV OPENAI_API_KEY="" |
|
ENV CODE="" |
|
|
|
COPY --from=builder /app/public ./public |
|
COPY --from=builder /app/.next/standalone ./ |
|
COPY --from=builder /app/.next/static ./.next/static |
|
COPY --from=builder /app/.next/server ./.next/server |
|
|
|
EXPOSE 7860 |
|
|
|
CMD if [ -n "$PROXY_URL" ]; then \ |
|
protocol=$(echo $PROXY_URL | cut -d: -f1); \ |
|
host=$(echo $PROXY_URL | cut -d/ -f3 | cut -d: -f1); \ |
|
port=$(echo $PROXY_URL | cut -d: -f3); \ |
|
conf=/etc/proxychains.conf; \ |
|
echo "strict_chain" > $conf; \ |
|
echo "proxy_dns" >> $conf; \ |
|
echo "remote_dns_subnet 224" >> $conf; \ |
|
echo "tcp_read_time_out 15000" >> $conf; \ |
|
echo "tcp_connect_time_out 8000" >> $conf; \ |
|
echo "[ProxyList]" >> $conf; \ |
|
echo "$protocol $host $port" >> $conf; \ |
|
cat /etc/proxychains.conf; \ |
|
proxychains -f $conf node server.js; \ |
|
else \ |
|
node server.js; \ |
|
fi |
|
|