hongshi-files commited on
Commit
d7b851f
·
verified ·
1 Parent(s): 35479d9

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +36 -24
Dockerfile CHANGED
@@ -1,37 +1,49 @@
1
- # Dockerfile
2
  FROM denoland/deno:latest
3
 
4
  WORKDIR /app
5
 
6
- # 安装 curl(用于下载代理)和 net-tools 用于端口检测
7
- RUN apt-get update \
8
- && apt-get install -y curl net-tools \
9
- && rm -rf /var/lib/apt/lists/*
10
 
11
- # 下载预编译的 dynamic-proxy(请先确认你的平台是 linux/amd64)
12
- RUN curl -L https://github.com/kbykb/dynamic-proxy/releases/latest/download/dynamic-proxy-linux-amd64 \
13
- -o /usr/local/bin/dynamic-proxy \
14
- && chmod +x /usr/local/bin/dynamic-proxy
 
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
- CMD ["sh", "-c", "\
30
- /usr/local/bin/dynamic-proxy -config=/app/config.yaml & \
31
- echo \"Waiting for proxy to listen on port 17285...\"; \
32
- until netstat -tuln | grep \":17285\"; do \
33
- sleep 1; \
 
 
 
 
 
 
 
 
 
34
  done; \
35
- echo \"Proxy is up, starting main service.\"; \
36
- deno run --allow-net --allow-env --allow-read main.ts \
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
+ "