PascalSmile8358/openapi
0
1FROM eceasy/cli-proxy-api:latest AS cpa2FROM seakee/cpa-manager:latest AS mgr3 4FROM python:3.12-alpine3.215 6RUN apk add --no-cache \7 bash \8 libc6-compat \9 gcompat \10 nginx \11 supervisor \12 ca-certificates \13 tzdata \14 && pip install --no-cache-dir "psycopg[binary]==3.2.10" \15 && addgroup -S app \16 && adduser -S -D -h /home/app -u 1000 -G app app \17 && mkdir -p \18 /app \19 /data \20 /run/nginx \21 /tmp/.cli-proxy-api \22 /tmp/logs \23 /tmp/pg_cache/pgstore \24 /tmp/nginx/client_temp \25 /tmp/nginx/proxy_temp \26 /tmp/nginx/fastcgi_temp \27 /tmp/nginx/uwsgi_temp \28 /tmp/nginx/scgi_temp \29 && chown -R app:app \30 /app \31 /data \32 /run/nginx \33 /tmp/.cli-proxy-api \34 /tmp/logs \35 /tmp/pg_cache \36 /tmp/nginx \37 /home/app38 39WORKDIR /app40 41COPY --from=cpa /CLIProxyAPI/CLIProxyAPI /usr/local/bin/cli-proxy-api42COPY --from=mgr /usr/local/bin/cpa-manager /usr/local/bin/cpa-manager43 44RUN chmod +x /usr/local/bin/cli-proxy-api /usr/local/bin/cpa-manager45 46COPY --chown=app:app docker/entrypoint.sh /app/entrypoint.sh47COPY --chown=app:app docker/supervisord.conf /etc/supervisord.conf48COPY --chown=app:app docker/nginx.conf /etc/nginx/nginx.conf49COPY --chown=app:app docker/sync_usage.py /app/sync_usage.py50 51RUN chmod +x /app/entrypoint.sh /app/sync_usage.py52 53USER app54 55ENV HOME=/home/app56ENV TZ=Asia/Shanghai57 58# CPA-Manager 本地 SQLite(原生)59ENV HTTP_ADDR=127.0.0.1:1831760ENV USAGE_DATA_DIR=/data61ENV USAGE_DB_PATH=/data/usage.sqlite62 63# CLIProxyAPI PG 本地镜像目录64ENV PGSTORE_LOCAL_PATH=/data65 66# 同步脚本参数67ENV USAGE_SYNC_SCHEMA=cpa_manager_usage68ENV USAGE_SYNC_INTERVAL_SEC=369ENV USAGE_SYNC_BATCH=50070ENV USAGE_SYNC_MANAGER_BASE=http://127.0.0.1:1831771ENV USAGE_SYNC_FORCE_UPSTREAM_URL=http://127.0.0.1:831772ENV USAGE_SYNC_WAIT_SEC=30073 74# 首次空 PG 启动时,CLIProxyAPI 的 bootstrap 配置75ENV CPA_BIND_HOST=127.0.0.176ENV CPA_BIND_PORT=831777ENV CPA_AUTH_DIR=/tmp/.cli-proxy-api78ENV CPA_BOOTSTRAP_MANAGEMENT_KEY=changeme79 80EXPOSE 786081 82ENTRYPOINT ["/app/entrypoint.sh"]83 