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=playwright \ 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 start-space.sh /app/start-space.sh RUN mkdir -p /app/data \ && chown -R node:node /app \ && chmod +x /app/start-space.sh USER node EXPOSE 7860 ENTRYPOINT ["tini", "--"] CMD ["/app/start-space.sh"]