Dockerfile 部署
This commit is contained in:
@@ -46,17 +46,21 @@ def get_page(headless: bool = False, port: int = 9222) -> ChromiumPage:
|
|||||||
is_docker = os.path.exists('/.dockerenv')
|
is_docker = os.path.exists('/.dockerenv')
|
||||||
if headless or is_docker:
|
if headless or is_docker:
|
||||||
co.set_argument("--headless=new")
|
co.set_argument("--headless=new")
|
||||||
|
co.set_argument("--disable-gpu") # Docker 无头模式下强烈建议禁用 GPU,防止 404 和渲染崩溃
|
||||||
|
|
||||||
co.set_argument("--disable-blink-features=AutomationControlled")
|
co.set_argument("--disable-blink-features=AutomationControlled")
|
||||||
co.set_argument("--no-sandbox")
|
co.set_argument("--no-sandbox")
|
||||||
co.set_argument("--disable-dev-shm-usage") # 增加这个参数防止容器内存不足
|
co.set_argument("--disable-dev-shm-usage") # 防止 Docker 共享内存耗尽导致浏览器崩溃
|
||||||
|
co.set_argument("--disable-software-rasterizer") # 配合无头模式禁用软件光栅化器
|
||||||
co.set_argument("--window-size=1440,900")
|
co.set_argument("--window-size=1440,900")
|
||||||
|
|
||||||
if is_docker:
|
if is_docker:
|
||||||
# 在 Docker 生产环境中,为了防止僵尸进程占用固定端口导致 404 握手失败
|
# Docker 生产环境:每次启动分配随机端口,避免前一个僵尸进程占用导致 404
|
||||||
# 我们使用 auto_port(True) 让它每次都随机分配一个空闲端口,完全隔离
|
|
||||||
co.auto_port(True)
|
co.auto_port(True)
|
||||||
|
# 指定 Docker 内的 Chromium 路径,确保 DrissionPage 不会去找不存在的默认路径
|
||||||
|
co.set_browser_path('/usr/bin/chromium')
|
||||||
else:
|
else:
|
||||||
# 本地开发环境保持使用固定端口,方便复用已经打开的浏览器
|
# 本地开发环境:使用固定端口,方便复用
|
||||||
co.set_local_port(port)
|
co.set_local_port(port)
|
||||||
|
|
||||||
return ChromiumPage(co)
|
return ChromiumPage(co)
|
||||||
|
|||||||
Reference in New Issue
Block a user