FROM ymlisoft/kkfileview USER root # 安装 Nginx、xvfb 和密码工具 RUN apt-get update && apt-get install -y \ nginx \ apache2-utils \ xvfb \ && rm -rf /var/lib/apt/lists/* ENV SERVER_PORT=8012 ENV KKFILEVIEW_SECURITY_TRUST_HOST=default ENV AUTH_USERNAME=admin ENV AUTH_PASSWORD=123456 # 配置 Nginx RUN rm -f /etc/nginx/sites-enabled/default && \ printf 'server {\n\ listen 7860;\n\ server_name _;\n\ \n\ # 密码保护\n\ auth_basic "kkFileView Access";\n\ auth_basic_user_file /etc/nginx/.htpasswd;\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 $scheme;\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 "=== kkFileView with Password Protection ==="\n\ echo ""\n\ \n\ # 创建密码文件\n\ echo "Creating password file..."\n\ htpasswd -cb /etc/nginx/.htpasswd "$AUTH_USERNAME" "$AUTH_PASSWORD"\n\ echo "✓ Username: $AUTH_USERNAME"\n\ echo "✓ Password: [HIDDEN]"\n\ echo ""\n\ \n\ # 启动 Xvfb\n\ echo "Starting Xvfb..."\n\ Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 &\n\ export DISPLAY=:99\n\ sleep 2\n\ echo "✓ Xvfb started"\n\ echo ""\n\ \n\ # 启动 kkFileView(后台运行在 8012)\n\ echo "Starting kkFileView on port 8012..."\n\ /opt/kkFileView/bin/kkFileView --server.port=8012 >/tmp/kkfileview.log 2>&1 &\n\ KKFILEVIEW_PID=$!\n\ echo "✓ kkFileView PID: $KKFILEVIEW_PID"\n\ \n\ # 等待 kkFileView 启动\n\ echo "Waiting for kkFileView to be ready..."\n\ sleep 10\n\ \n\ # 启动 Nginx)\n\ echo "Starting Nginx on port 7860..."\n\ echo "✓ Ready! Access with username and password"\n\ echo ""\n\ nginx -g "daemon off;"\n' > /start.sh && \ chmod +x /start.sh EXPOSE 7860 CMD ["/start.sh"]