learn-spider/Dockerfile_base

87 lines
2.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FROM mcr.microsoft.com/playwright:v1.48.0-jammy
ENV DEBIAN_FRONTEND=noninteractive
# ========== 安装 VNC 相关软件 ==========
RUN apt-get update && \
apt-get install -y \
x11vnc \
xvfb \
fluxbox \
git \
tigervnc-standalone-server \
wget \
curl \
&& rm -rf /var/lib/apt/lists/*
# ========== 安装 noVNC ==========
RUN git clone https://github.com/novnc/noVNC.git /opt/novnc && \
git clone https://github.com/novnc/websockify.git /opt/novnc/utils/websockify
# ========== 创建启动脚本 ==========
RUN cat > /entrypoint.sh << 'EOF'
#!/bin/bash
# 设置 VNC 密码(从环境变量读取)
if [ ! -z "$VNC_PASSWORD" ]; then
mkdir -p /root/.vnc
echo "$VNC_PASSWORD" | vncpasswd -f > /root/.vnc/passwd
chmod 600 /root/.vnc/passwd
VNC_SECURITY="-SecurityTypes VncAuth -PasswordFile /root/.vnc/passwd"
else
VNC_SECURITY="-SecurityTypes None"
fi
# 启动虚拟显示
Xvfb :1 -screen 0 1280x1024x24 &
export DISPLAY=:1
# 等待 Xvfb 启动
sleep 2
# 启动窗口管理器
fluxbox &
# 启动 VNC 服务器(使用 tigervnc
vncserver :1 -geometry 1280x1024 -depth 24 \
-localhost no \
-verbose \
$VNC_SECURITY || true
# 启动 noVNC Web 代理
/opt/novnc/utils/novnc_proxy --vnc localhost:5901 --listen 6080 &
# 等待服务启动
sleep 5
# 获取 Playwright 安装的 Chromium 路径
CHROMIUM_PATH=$(find /ms-playwright -name "chrome" -type f -executable | head -1)
if [ -z "$CHROMIUM_PATH" ]; then
echo "Warning: Chromium not found, using system chrome"
CHROMIUM_PATH="google-chrome"
fi
echo "Using Chromium: $CHROMIUM_PATH"
# 启动 Chromium
$CHROMIUM_PATH \
--no-sandbox \
--disable-gpu \
--remote-debugging-port=9222 \
--remote-debugging-address=0.0.0.0 \
--window-size=1280,1024 \
--disable-dev-shm-usage \
--disable-setuid-sandbox \
--user-data-dir=/tmp/chromium-profile &
# 保持容器运行
wait
EOF
RUN chmod +x /entrypoint.sh
# ========== 暴露端口 ==========
EXPOSE 6080 9222
# ========== 设置入口点 ==========
ENTRYPOINT ["/entrypoint.sh"]