dragg2 commited on
Commit
50ec61c
·
verified ·
1 Parent(s): 51b4ac5

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +27 -27
Dockerfile CHANGED
@@ -1,11 +1,8 @@
1
- FROM ymlisoft/kkfileview
2
 
3
  USER root
4
 
5
- # 1. 安装工具
6
- # net-tools: 检测端口
7
- # nginx: 反向代理和密码保护
8
- # apache2-utils: 生成密码文件
9
  RUN apt-get update && apt-get install -y \
10
  nginx \
11
  apache2-utils \
@@ -14,27 +11,19 @@ RUN apt-get update && apt-get install -y \
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=123456
24
 
25
- # 3. 配置 Nginx
26
  RUN rm -f /etc/nginx/sites-enabled/default && \
27
  printf 'server {\n\
28
  listen 7860;\n\
29
  server_name _;\n\
30
- \n\
31
- # 开启密码验证\n\
32
  auth_basic "Restricted Access";\n\
33
  auth_basic_user_file /etc/nginx/.htpasswd;\n\
34
- \n\
35
- # 上传大小限制\n\
36
  client_max_body_size 500M;\n\
37
- \n\
38
  location / {\n\
39
  proxy_pass http://127.0.0.1:8012;\n\
40
  proxy_set_header Host $host;\n\
@@ -46,31 +35,43 @@ RUN rm -f /etc/nginx/sites-enabled/default && \
46
  }\n' > /etc/nginx/sites-available/kkfileview && \
47
  ln -s /etc/nginx/sites-available/kkfileview /etc/nginx/sites-enabled/
48
 
49
- # 4. 创建启动脚本
50
  RUN printf '#!/bin/bash\n\
51
  set -e\n\
52
  \n\
53
  echo "=== Starting Secure kkFileView ==="\n\
54
  \n\
55
- # A. 生成密码文件\n\
56
- echo "Configuring password..."\n\
 
 
 
 
 
 
 
 
 
 
57
  htpasswd -cb /etc/nginx/.htpasswd "$AUTH_USERNAME" "$AUTH_PASSWORD"\n\
58
  \n\
59
- # B. 启动虚拟显示 (LibreOffice 需要)\n\
60
- echo "Starting Xvfb..."\n\
61
  Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 &\n\
62
  export DISPLAY=:99\n\
63
  sleep 2\n\
64
  \n\
65
- # C. 启动 kkFileView (后台运行)\n\
66
  echo "Starting kkFileView on port 8012..."\n\
67
- # 关键:使用 tee 将日志同时输出到文件和控制台,确保你能看到报错\n\
68
- /opt/kkFileView/bin/kkFileView --server.port=8012 2>&1 | tee /var/log/kkfileview.log &\n\
 
 
 
 
69
  \n\
70
- # D. 等待 kkFileView 就绪\n\
71
  echo "Waiting for backend..."\n\
72
  for i in {1..60}; do\n\
73
- # 使用 netstat 检测端口是否监听,比 curl 更可靠\n\
74
  if netstat -tuln | grep ":8012 " > /dev/null; then\n\
75
  echo "✓ Port 8012 is ready!"\n\
76
  break\n\
@@ -79,12 +80,11 @@ for i in {1..60}; do\n\
79
  sleep 2\n\
80
  done\n\
81
  \n\
82
- # E. 启动 Nginx (前台运行)\n\
83
  echo "Starting Nginx on 7860..."\n\
84
  nginx -g "daemon off;"\n' > /start.sh && \
85
  chmod +x /start.sh
86
 
87
- # 5. 暴露端口
88
  EXPOSE 7860
89
 
90
  ENTRYPOINT []
 
1
+ FROM ymlisoft/kkfileview:4.4.0
2
 
3
  USER root
4
 
5
+ # 安装工具
 
 
 
6
  RUN apt-get update && apt-get install -y \
7
  nginx \
8
  apache2-utils \
 
11
  curl \
12
  && rm -rf /var/lib/apt/lists/*
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 配置
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
  client_max_body_size 500M;\n\
 
27
  location / {\n\
28
  proxy_pass http://127.0.0.1:8012;\n\
29
  proxy_set_header Host $host;\n\
 
35
  }\n' > /etc/nginx/sites-available/kkfileview && \
36
  ln -s /etc/nginx/sites-available/kkfileview /etc/nginx/sites-enabled/
37
 
38
+ # 启动脚本
39
  RUN printf '#!/bin/bash\n\
40
  set -e\n\
41
  \n\
42
  echo "=== Starting Secure kkFileView ==="\n\
43
  \n\
44
+ # 1. 找启动脚本路径\n\
45
+ # 自动查找 startup.sh 或 kkFileView 启动文件\n\
46
+ STARTUP_SCRIPT=$(find /opt -name "startup.sh" -o -name "kkFileView" | grep "bin/" | head -n 1)\n\
47
+ if [ -z "$STARTUP_SCRIPT" ]; then\n\
48
+ echo "ERROR: Could not find startup script in /opt"\n\
49
+ echo "Listing /opt:"\n\
50
+ ls -R /opt\n\
51
+ exit 1\n\
52
+ fi\n\
53
+ echo "Found startup script: $STARTUP_SCRIPT"\n\
54
+ \n\
55
+ # 2. 配置密码\n\
56
  htpasswd -cb /etc/nginx/.htpasswd "$AUTH_USERNAME" "$AUTH_PASSWORD"\n\
57
  \n\
58
+ # 3. 启动 Xvfb\n\
 
59
  Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 &\n\
60
  export DISPLAY=:99\n\
61
  sleep 2\n\
62
  \n\
63
+ # 4. 启动 kkFileView\n\
64
  echo "Starting kkFileView on port 8012..."\n\
65
+ # 如果是 startup.sh,通常需要 bash 执行\n\
66
+ if [[ "$STARTUP_SCRIPT" == *".sh" ]]; then\n\
67
+ bash "$STARTUP_SCRIPT" > /var/log/kkfileview.log 2>&1 &\n\
68
+ else\n\
69
+ "$STARTUP_SCRIPT" --server.port=8012 > /var/log/kkfileview.log 2>&1 &\n\
70
+ fi\n\
71
  \n\
72
+ # 5. 等待端口\n\
73
  echo "Waiting for backend..."\n\
74
  for i in {1..60}; do\n\
 
75
  if netstat -tuln | grep ":8012 " > /dev/null; then\n\
76
  echo "✓ Port 8012 is ready!"\n\
77
  break\n\
 
80
  sleep 2\n\
81
  done\n\
82
  \n\
83
+ # 6. 启动 Nginx\n\
84
  echo "Starting Nginx on 7860..."\n\
85
  nginx -g "daemon off;"\n' > /start.sh && \
86
  chmod +x /start.sh
87
 
 
88
  EXPOSE 7860
89
 
90
  ENTRYPOINT []