refactor(docker): update Dockerfile and browser strategy to use Chromium

This commit is contained in:
UncleCode
2025-03-28 15:59:02 +08:00
parent c635f6b9a2
commit 64f20ab44a
4 changed files with 13 additions and 9 deletions

View File

@@ -9,11 +9,15 @@
freetype \ freetype \
harfbuzz \ harfbuzz \
ca-certificates \ ca-certificates \
ttf-freefont && \ ttf-freefont \
socat \
curl && \
addgroup -S chromium && adduser -S chromium -G chromium && \ addgroup -S chromium && adduser -S chromium -G chromium && \
mkdir -p /data && chown chromium:chromium /data && \ mkdir -p /data && chown chromium:chromium /data && \
rm -rf /var/cache/apk/* rm -rf /var/cache/apk/*
ENV PATH="/usr/bin:/bin:/usr/sbin:/sbin"
# Switch to a non-root user for security # Switch to a non-root user for security
USER chromium USER chromium
WORKDIR /home/chromium WORKDIR /home/chromium

View File

@@ -501,7 +501,7 @@ class DockerUtils:
bool: True if Chrome started successfully, False otherwise bool: True if Chrome started successfully, False otherwise
""" """
# Build Chrome command # Build Chrome command
chrome_cmd = ["google-chrome"] chrome_cmd = ["chromium"]
chrome_cmd.extend(browser_args) chrome_cmd.extend(browser_args)
returncode, _, stderr = await self.exec_in_container( returncode, _, stderr = await self.exec_in_container(

View File

@@ -14,13 +14,13 @@ from ...async_configs import BrowserConfig
from ..models import DockerConfig from ..models import DockerConfig
from ..docker_registry import DockerRegistry from ..docker_registry import DockerRegistry
from ..docker_utils import DockerUtils from ..docker_utils import DockerUtils
from .builtin import BuiltinBrowserStrategy from .builtin import CDPBrowserStrategy
class DockerBrowserStrategy(BuiltinBrowserStrategy): class DockerBrowserStrategy(CDPBrowserStrategy):
"""Docker-based browser strategy. """Docker-based browser strategy.
Extends the BuiltinBrowserStrategy to run browsers in Docker containers. Extends the CDPBrowserStrategy to run browsers in Docker containers.
Supports two modes: Supports two modes:
1. "connect" - Uses a Docker image with Chrome already running 1. "connect" - Uses a Docker image with Chrome already running
2. "launch" - Starts Chrome within the container with custom settings 2. "launch" - Starts Chrome within the container with custom settings
@@ -342,7 +342,7 @@ class DockerBrowserStrategy(BuiltinBrowserStrategy):
# Get PIDs for later cleanup # Get PIDs for later cleanup
self.chrome_process_id = await self.docker_utils.get_process_id_in_container( self.chrome_process_id = await self.docker_utils.get_process_id_in_container(
container_id, "chrome" container_id, "chromium"
) )
self.socat_process_id = await self.docker_utils.get_process_id_in_container( self.socat_process_id = await self.docker_utils.get_process_id_in_container(
container_id, "socat" container_id, "socat"
@@ -396,7 +396,7 @@ class DockerBrowserStrategy(BuiltinBrowserStrategy):
if self.config.light_mode: if self.config.light_mode:
# Import here to avoid circular import # Import here to avoid circular import
from .utils import get_browser_disable_options from ..utils import get_browser_disable_options
args.extend(get_browser_disable_options()) args.extend(get_browser_disable_options())
if self.config.user_data_dir: if self.config.user_data_dir:

View File

@@ -615,8 +615,8 @@ async def run_tests():
# Run browser tests # Run browser tests
# results.append(await test_docker_connect_mode()) # results.append(await test_docker_connect_mode())
results.append(await test_docker_launch_mode()) # results.append(await test_docker_launch_mode())
results.append(await test_docker_persistent_storage()) # results.append(await test_docker_persistent_storage())
results.append(await test_docker_parallel_pages()) results.append(await test_docker_parallel_pages())
results.append(await test_docker_registry_reuse()) results.append(await test_docker_registry_reuse())