Spaces:
Build error
Build error
Update Dockerfile
Browse files- Dockerfile +36 -24
Dockerfile
CHANGED
|
@@ -1,37 +1,49 @@
|
|
| 1 |
-
# Dockerfile
|
| 2 |
FROM denoland/deno:latest
|
| 3 |
|
| 4 |
WORKDIR /app
|
| 5 |
|
| 6 |
-
#
|
| 7 |
-
RUN apt-get update \
|
| 8 |
-
|
| 9 |
-
|
| 10 |
|
| 11 |
-
#
|
| 12 |
-
RUN
|
| 13 |
-
|
| 14 |
-
|
|
|
|
| 15 |
|
| 16 |
-
#
|
| 17 |
COPY main.ts .
|
|
|
|
| 18 |
|
| 19 |
-
#
|
| 20 |
-
EXPOSE 17285
|
| 21 |
-
EXPOSE 8000
|
| 22 |
-
|
| 23 |
-
# 默认环境变量(可在部署时覆盖)
|
| 24 |
ENV WORKER_API_KEY="1"
|
| 25 |
ENV PROXY_URL="http://127.0.0.1:17285"
|
| 26 |
ENV SERVICE_PORT="8000"
|
| 27 |
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
done; \
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
FROM denoland/deno:latest
|
| 2 |
|
| 3 |
WORKDIR /app
|
| 4 |
|
| 5 |
+
# 安装构建 dynamic-proxy 需要的依赖
|
| 6 |
+
RUN apt-get update && \
|
| 7 |
+
apt-get install -y git golang net-tools build-essential && \
|
| 8 |
+
rm -rf /var/lib/apt/lists/*
|
| 9 |
|
| 10 |
+
# 克隆 dynamic-proxy 并构建
|
| 11 |
+
RUN git clone https://github.com/kbykb/dynamic-proxy.git /app/dynamic-proxy && \
|
| 12 |
+
cd /app/dynamic-proxy && \
|
| 13 |
+
go build -o /usr/local/bin/dynamic-proxy . && \
|
| 14 |
+
rm -rf /app/dynamic-proxy
|
| 15 |
|
| 16 |
+
# 拷贝服务端文件
|
| 17 |
COPY main.ts .
|
| 18 |
+
COPY config.yaml .
|
| 19 |
|
| 20 |
+
# 默认环境变量(可在 HF Space WebUI 覆盖)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
ENV WORKER_API_KEY="1"
|
| 22 |
ENV PROXY_URL="http://127.0.0.1:17285"
|
| 23 |
ENV SERVICE_PORT="8000"
|
| 24 |
|
| 25 |
+
EXPOSE 17285
|
| 26 |
+
EXPOSE 8000
|
| 27 |
+
|
| 28 |
+
# 启动脚本:先起 dynamic-proxy → 等待端口 → 再启动 Deno 服务
|
| 29 |
+
CMD sh -c "\
|
| 30 |
+
echo 'Starting dynamic-proxy...'; \
|
| 31 |
+
/usr/local/bin/dynamic-proxy -config=/app/config.yaml > /app/proxy.log 2>&1 & \
|
| 32 |
+
echo 'Waiting for proxy to listen on port 17285...'; \
|
| 33 |
+
for i in $(seq 1 20); do \
|
| 34 |
+
if netstat -tuln | grep ':17285' > /dev/null; then \
|
| 35 |
+
echo 'dynamic-proxy is UP.'; \
|
| 36 |
+
break; \
|
| 37 |
+
fi; \
|
| 38 |
+
sleep 1; \
|
| 39 |
+
echo '...'; \
|
| 40 |
done; \
|
| 41 |
+
if ! netstat -tuln | grep ':17285' > /dev/null; then \
|
| 42 |
+
echo 'ERROR: dynamic-proxy FAILED to start'; \
|
| 43 |
+
echo '---- proxy log ----'; \
|
| 44 |
+
cat /app/proxy.log; \
|
| 45 |
+
exit 1; \
|
| 46 |
+
fi; \
|
| 47 |
+
echo 'Starting main.ts'; \
|
| 48 |
+
deno run --allow-net --allow-env --allow-read /app/main.ts \
|
| 49 |
+
"
|