FROM golang:1.25-alpine AS go-builder ENV GOPROXY=https://goproxy.cn,direct WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /zai2api ./cmd/main.go FROM node:20-bookworm-slim ENV DEBIAN_FRONTEND=noninteractive \ BROWSER_BACKEND=cloak \ POOL_SIZE=0 \ CHROMIUM_PATH=/usr/bin/chromium \ CAPTCHA_PROVIDER_URL=http://127.0.0.1:9876 \ LOG_LEVEL=info \ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ chromium \ fonts-noto-cjk \ tini \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=go-builder --chown=node:node /zai2api /app/zai2api COPY --chown=node:node captcha-provider/package*.json /app/captcha-provider/ RUN cd /app/captcha-provider \ && npm ci --omit=dev \ && npm cache clean --force COPY --chown=node:node captcha-provider /app/captcha-provider COPY --chown=node:node init.sh /app/init.sh RUN mkdir -p /app/data \ && chown -R node:node /app \ && chmod +x /app/init.sh USER node EXPOSE 7860 ENTRYPOINT ["tini", "--"] CMD ["/app/init.sh"]