| 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 |
|
|