63 lines
1.5 KiB
Docker
63 lines
1.5 KiB
Docker
FROM vnc-server-base:latest
|
|
|
|
# 配置 nginx 反向代理 CDP
|
|
RUN cat > /etc/nginx/sites-enabled/cdp << 'EOF'
|
|
server {
|
|
listen 9223;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:9222;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host:$server_port;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
}
|
|
}
|
|
EOF
|
|
|
|
# 禁用默认站点
|
|
RUN rm -f /etc/nginx/sites-enabled/default
|
|
|
|
RUN cat > /entrypoint.sh << 'EOF'
|
|
#!/bin/bash
|
|
|
|
# VNC_PWD=${VNC_PASSWORD:-"123456"}
|
|
# VNC_PORT=${VNC_PORT:-5900}
|
|
# DISPLAY_NUM=${DISPLAY_NUM:-99}
|
|
# TARGET_URL=${TARGET_URL:-"https://www.baidu.com"}
|
|
TARGET_URL=${TARGET_URL:-"blank"}
|
|
|
|
Xvfb :99 -screen 0 1280x1024x24 &
|
|
sleep 2
|
|
export DISPLAY=:99
|
|
|
|
CHROME_BIN=$(find /ms-playwright -name "chrome" -type f -executable 2>/dev/null | head -1)
|
|
if [ -z "$CHROME_BIN" ]; then
|
|
CHROME_BIN=$(which chromium-browser 2>/dev/null || which google-chrome-stable 2>/dev/null || which chrome 2>/dev/null)
|
|
fi
|
|
|
|
"$CHROME_BIN" \
|
|
--no-sandbox \
|
|
--disable-gpu \
|
|
--remote-debugging-port=9222 \
|
|
--remote-debugging-address=0.0.0.0 \
|
|
--remote-allow-origins=* \
|
|
--disable-features=IsolateOrigins,site-per-process \
|
|
"${TARGET_URL}" &
|
|
|
|
x11vnc -display :99 -forever -shared -rfbport 5900 &
|
|
|
|
/opt/novnc/utils/novnc_proxy --vnc localhost:5900 --listen 6080 &
|
|
|
|
# 启动 nginx
|
|
nginx &
|
|
|
|
wait
|
|
EOF
|
|
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
EXPOSE 5900 6080 9223
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"] |