g4f / Dockerfile
hongshi-files's picture
Update Dockerfile
d7b851f verified
FROM denoland/deno:latest
WORKDIR /app
# 安装构建 dynamic-proxy 需要的依赖
RUN apt-get update && \
apt-get install -y git golang net-tools build-essential && \
rm -rf /var/lib/apt/lists/*
# 克隆 dynamic-proxy 并构建
RUN git clone https://github.com/kbykb/dynamic-proxy.git /app/dynamic-proxy && \
cd /app/dynamic-proxy && \
go build -o /usr/local/bin/dynamic-proxy . && \
rm -rf /app/dynamic-proxy
# 拷贝服务端文件
COPY main.ts .
COPY config.yaml .
# 默认环境变量(可在 HF Space WebUI 覆盖)
ENV WORKER_API_KEY="1"
ENV PROXY_URL="http://127.0.0.1:17285"
ENV SERVICE_PORT="8000"
EXPOSE 17285
EXPOSE 8000
# 启动脚本:先起 dynamic-proxy → 等待端口 → 再启动 Deno 服务
CMD sh -c "\
echo 'Starting dynamic-proxy...'; \
/usr/local/bin/dynamic-proxy -config=/app/config.yaml > /app/proxy.log 2>&1 & \
echo 'Waiting for proxy to listen on port 17285...'; \
for i in $(seq 1 20); do \
if netstat -tuln | grep ':17285' > /dev/null; then \
echo 'dynamic-proxy is UP.'; \
break; \
fi; \
sleep 1; \
echo '...'; \
done; \
if ! netstat -tuln | grep ':17285' > /dev/null; then \
echo 'ERROR: dynamic-proxy FAILED to start'; \
echo '---- proxy log ----'; \
cat /app/proxy.log; \
exit 1; \
fi; \
echo 'Starting main.ts'; \
deno run --allow-net --allow-env --allow-read /app/main.ts \
"