dragg2 commited on
Commit
ec4776c
·
verified ·
1 Parent(s): fc0cce5

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +31 -16
Dockerfile CHANGED
@@ -2,27 +2,40 @@ FROM ymlisoft/kkfileview
2
 
3
  USER root
4
 
5
- # 安装 Nginx, xvfb, curl
 
 
 
6
  RUN apt-get update && apt-get install -y \
7
  nginx \
8
  apache2-utils \
9
  xvfb \
 
10
  curl \
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
- # 环境变量
 
14
  ENV SERVER_PORT=8012
15
  ENV KKFILEVIEW_SECURITY_TRUST_HOST=default
 
16
  ENV AUTH_USERNAME=admin
17
  ENV AUTH_PASSWORD=yourpassword
18
 
19
- # 配置 Nginx (监听 7860 -> 转发 8012)
 
20
  RUN rm -f /etc/nginx/sites-enabled/default && \
21
  printf 'server {\n\
22
  listen 7860;\n\
23
  server_name _;\n\
 
 
24
  auth_basic "Restricted Access";\n\
25
  auth_basic_user_file /etc/nginx/.htpasswd;\n\
 
 
 
 
26
  location / {\n\
27
  proxy_pass http://127.0.0.1:8012;\n\
28
  proxy_set_header Host $host;\n\
@@ -34,43 +47,45 @@ RUN rm -f /etc/nginx/sites-enabled/default && \
34
  }\n' > /etc/nginx/sites-available/kkfileview && \
35
  ln -s /etc/nginx/sites-available/kkfileview /etc/nginx/sites-enabled/
36
 
37
- # 启动脚本
38
  RUN printf '#!/bin/bash\n\
39
  set -e\n\
40
  \n\
41
- echo "=== Starting Services ==="\n\
42
  \n\
43
- # 1. 配置密码\n\
44
  echo "Configuring password..."\n\
45
  htpasswd -cb /etc/nginx/.htpasswd "$AUTH_USERNAME" "$AUTH_PASSWORD"\n\
46
  \n\
47
- # 2. 启动 Xvfb\n\
48
  echo "Starting Xvfb..."\n\
49
  Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 &\n\
50
  export DISPLAY=:99\n\
51
  sleep 2\n\
52
  \n\
53
- # 3. 启动 kkFileView\n\
54
- echo "Starting kkFileView backend on 8012..."\n\
55
- # 将日志重定向到文件,避免干扰控制台,同时后台运行\n\
56
- /opt/kkFileView/bin/kkFileView --server.port=8012 > /var/log/kkfileview.log 2>&1 &\n\
57
  \n\
58
- # 4. 等待 kkFileView 启动\n\
59
- echo "Waiting for backend to be ready..."\n\
60
  for i in {1..60}; do\n\
61
- if curl -s http://127.0.0.1:8012 > /dev/null; then\n\
62
- echo " Backend is ready!"\n\
 
63
  break\n\
64
  fi\n\
65
  echo "Waiting... ($i/60)"\n\
66
  sleep 2\n\
67
  done\n\
68
  \n\
69
- # 5. 启动 Nginx\n\
70
  echo "Starting Nginx on 7860..."\n\
71
  nginx -g "daemon off;"\n' > /start.sh && \
72
  chmod +x /start.sh
73
 
 
74
  EXPOSE 7860
75
 
76
  ENTRYPOINT []
 
2
 
3
  USER root
4
 
5
+ # 1. 安装必要工具
6
+ # net-tools: 用于检测端口
7
+ # nginx: 用于反向代理和密码保护
8
+ # apache2-utils: 用于生成密码文件 (htpasswd)
9
  RUN apt-get update && apt-get install -y \
10
  nginx \
11
  apache2-utils \
12
  xvfb \
13
+ net-tools \
14
  curl \
15
  && rm -rf /var/lib/apt/lists/*
16
 
17
+ # 2. 环境变量
18
+ # kkFileView 内部端口
19
  ENV SERVER_PORT=8012
20
  ENV KKFILEVIEW_SECURITY_TRUST_HOST=default
21
+ # 默认账号密码(可以在 HF Spaces 设置中覆盖)
22
  ENV AUTH_USERNAME=admin
23
  ENV AUTH_PASSWORD=yourpassword
24
 
25
+ # 3. 配置 Nginx
26
+ # 监听 7860 端口,配置 Basic Auth,转发给 8012
27
  RUN rm -f /etc/nginx/sites-enabled/default && \
28
  printf 'server {\n\
29
  listen 7860;\n\
30
  server_name _;\n\
31
+ \n\
32
+ # 开启密码验证\n\
33
  auth_basic "Restricted Access";\n\
34
  auth_basic_user_file /etc/nginx/.htpasswd;\n\
35
+ \n\
36
+ # 上传大小限制\n\
37
+ client_max_body_size 500M;\n\
38
+ \n\
39
  location / {\n\
40
  proxy_pass http://127.0.0.1:8012;\n\
41
  proxy_set_header Host $host;\n\
 
47
  }\n' > /etc/nginx/sites-available/kkfileview && \
48
  ln -s /etc/nginx/sites-available/kkfileview /etc/nginx/sites-enabled/
49
 
50
+ # 4. 创建启动脚本
51
  RUN printf '#!/bin/bash\n\
52
  set -e\n\
53
  \n\
54
+ echo "=== Starting Secure kkFileView ==="\n\
55
  \n\
56
+ # A. 生成密码文件\n\
57
  echo "Configuring password..."\n\
58
  htpasswd -cb /etc/nginx/.htpasswd "$AUTH_USERNAME" "$AUTH_PASSWORD"\n\
59
  \n\
60
+ # B. 启动虚拟显示 (LibreOffice 需要)\n\
61
  echo "Starting Xvfb..."\n\
62
  Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 &\n\
63
  export DISPLAY=:99\n\
64
  sleep 2\n\
65
  \n\
66
+ # C. 启动 kkFileView (后台运行)\n\
67
+ echo "Starting kkFileView on port 8012..."\n\
68
+ # 关键:使用 tee 将日志同时输出到文件和控制台,确保你能看到报错\n\
69
+ /opt/kkFileView/bin/kkFileView --server.port=8012 2>&1 | tee /var/log/kkfileview.log &\n\
70
  \n\
71
+ # D. 等待 kkFileView 就绪\n\
72
+ echo "Waiting for backend..."\n\
73
  for i in {1..60}; do\n\
74
+ # 使用 netstat 检测端口是否监听,比 curl 更可靠\n\
75
+ if netstat -tuln | grep ":8012 " > /dev/null; then\n\
76
+ echo "✓ Port 8012 is ready!"\n\
77
  break\n\
78
  fi\n\
79
  echo "Waiting... ($i/60)"\n\
80
  sleep 2\n\
81
  done\n\
82
  \n\
83
+ # E. 启动 Nginx (前台运行)\n\
84
  echo "Starting Nginx on 7860..."\n\
85
  nginx -g "daemon off;"\n' > /start.sh && \
86
  chmod +x /start.sh
87
 
88
+ # 5. 暴露端口
89
  EXPOSE 7860
90
 
91
  ENTRYPOINT []