cloudpasteview / Dockerfile
dragg2's picture
Update Dockerfile
763ac4b verified
raw
history blame
2.4 kB
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"]