cloudpasteview / Dockerfile
dragg2's picture
Update Dockerfile
19c209b verified
raw
history blame
2.07 kB
FROM ymlisoft/kkfileview
USER root
RUN apt-get update && apt-get install -y xvfb python3 && rm -rf /var/lib/apt/lists/*
ENV SERVER_PORT=8012
ENV KKFILEVIEW_SECURITY_TRUST_HOST=default
ENV ACCESS_TOKEN=your-secret-token-here
# 创建 Token 验证脚本(使用 printf)
RUN printf '#!/usr/bin/env python3\n\
import http.server\n\
import socketserver\n\
import urllib.request\n\
import os\n\
from urllib.parse import urlparse, parse_qs\n\
\n\
PORT = 7860\n\
BACKEND = "http://127.0.0.1:8012"\n\
TOKEN = os.getenv("ACCESS_TOKEN", "changeme")\n\
\n\
class TokenHandler(http.server.SimpleHTTPRequestHandler):\n\
def do_GET(self):\n\
parsed = urlparse(self.path)\n\
params = parse_qs(parsed.query)\n\
\n\
# 检查 token\n\
if params.get("token", [""])[0] != TOKEN:\n\
self.send_response(403)\n\
self.end_headers()\n\
self.wfile.write(b"Access denied. Please provide valid token.")\n\
return\n\
\n\
# 转发到后端\n\
url = BACKEND + self.path\n\
try:\n\
response = urllib.request.urlopen(url)\n\
self.send_response(response.getcode())\n\
for header, value in response.headers.items():\n\
self.send_header(header, value)\n\
self.end_headers()\n\
self.wfile.write(response.read())\n\
except Exception as e:\n\
self.send_error(502, f"Backend error: {str(e)}")\n\
\n\
with socketserver.TCPServer(("", PORT), TokenHandler) as httpd:\n\
print(f"Token auth running. Access with ?token={TOKEN}")\n\
httpd.serve_forever()\n' > /token_check.py && \
chmod +x /token_check.py
# 启动脚本
RUN printf '#!/bin/bash\n\
echo "=== Starting kkFileView with Token Auth ==="\n\
echo "Access token: [HIDDEN]"\n\
echo ""\n\
Xvfb :99 -screen 0 1024x768x24 &\n\
export DISPLAY=:99\n\
sleep 2\n\
/opt/kkFileView/bin/kkFileView --server.port=8012 &\n\
sleep 5\n\
python3 /token_check.py\n' > /start.sh && \
chmod +x /start.sh
EXPOSE 7860
CMD ["/start.sh"]