Spaces:
Running
Running
| FROM ymlisoft/kkfileview | |
| USER root | |
| # 安装工具 | |
| RUN apt-get update && apt-get install -y \ | |
| nginx \ | |
| apache2-utils \ | |
| xvfb \ | |
| net-tools \ | |
| curl \ | |
| && rm -rf /var/lib/apt/lists/* | |
| ENV SERVER_PORT=8012 | |
| ENV KKFILEVIEW_SECURITY_TRUST_HOST=default | |
| ENV AUTH_USERNAME=admin | |
| ENV AUTH_PASSWORD=yourpassword | |
| # Nginx 配置 | |
| RUN rm -f /etc/nginx/sites-enabled/default && \ | |
| printf 'server {\n\ | |
| listen 7860 default_server;\n\ | |
| server_name _;\n\ | |
| \n\ | |
| auth_basic "Restricted Access";\n\ | |
| auth_basic_user_file /etc/nginx/.htpasswd;\n\ | |
| client_max_body_size 500M;\n\ | |
| \n\ | |
| location / {\n\ | |
| proxy_pass http://127.0.0.1:8012;\n\ | |
| proxy_set_header Host $host;\n\ | |
| proxy_set_header X-Real-IP $remote_addr;\n\ | |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\ | |
| proxy_set_header X-Forwarded-Proto http;\n\ | |
| proxy_redirect off;\n\ | |
| proxy_buffering off;\n\ | |
| }\n\ | |
| }\n' > /etc/nginx/sites-available/kkfileview && \ | |
| ln -s /etc/nginx/sites-available/kkfileview /etc/nginx/sites-enabled/ | |
| # 启动脚本 | |
| RUN printf '#!/bin/bash\n\ | |
| set -e\n\ | |
| \n\ | |
| echo "=== Starting Secure kkFileView ==="\n\ | |
| \n\ | |
| # 1. 找启动脚本路径\n\ | |
| STARTUP_SCRIPT=$(find /opt -name "startup.sh" -o -name "kkFileView" | grep "bin/" | head -n 1)\n\ | |
| echo "Found startup script: $STARTUP_SCRIPT"\n\ | |
| \n\ | |
| # 2. 配置密码\n\ | |
| htpasswd -cb /etc/nginx/.htpasswd "$AUTH_USERNAME" "$AUTH_PASSWORD"\n\ | |
| \n\ | |
| # 3. 启动 Xvfb\n\ | |
| Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 &\n\ | |
| export DISPLAY=:99\n\ | |
| sleep 2\n\ | |
| \n\ | |
| # 4. 启动 kkFileView\n\ | |
| echo "Starting kkFileView on port 8012..."\n\ | |
| # 创建日志文件并开始后台 tail\n\ | |
| touch /var/log/kkfileview.log\n\ | |
| tail -f /var/log/kkfileview.log &\n\ | |
| \n\ | |
| if [[ "$STARTUP_SCRIPT" == *".sh" ]]; then\n\ | |
| bash "$STARTUP_SCRIPT" >> /var/log/kkfileview.log 2>&1 &\n\ | |
| else\n\ | |
| "$STARTUP_SCRIPT" --server.port=8012 >> /var/log/kkfileview.log 2>&1 &\n\ | |
| fi\n\ | |
| \n\ | |
| # 5. 等待端口\n\ | |
| echo "Waiting for backend..."\n\ | |
| for i in {1..60}; do\n\ | |
| if netstat -tuln | grep ":8012 " > /dev/null; then\n\ | |
| echo "✓ Port 8012 is ready!"\n\ | |
| break\n\ | |
| fi\n\ | |
| echo "Waiting... ($i/60)"\n\ | |
| sleep 2\n\ | |
| done\n\ | |
| \n\ | |
| # 6. 启动 Nginx\n\ | |
| echo "Starting Nginx on 7860..."\n\ | |
| nginx -g "daemon off;"\n' > /start.sh && \ | |
| chmod +x /start.sh | |
| EXPOSE 7860 | |
| ENTRYPOINT [] | |
| CMD ["/start.sh"] | |