You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECS上运行Selenium失败求助:Docker部署相关问题

解决方案

1. 补充Chrome运行依赖

Docker环境下运行Chrome需要额外系统库支持,在安装Chrome的步骤后添加依赖安装:

RUN apt-get update && apt-get -y install google-chrome-stable \
    && apt-get install -y libnss3 libgconf-2-4 libxss1 libasound2 libatk-bridge2.0-0 libgtk-3-0 \
    && rm -rf /var/lib/apt/lists/*

2. 强制Chrome与Chromedriver版本匹配

替换原有的chromedriver安装命令,通过Chrome版本精准匹配对应驱动:

RUN CHROME_VERSION=$(google-chrome-stable --version | grep -oP '\d+\.\d+\.\d+\.\d+') \
    && npm install chromedriver@$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION%.*}) --chromedriver-force-download

3. 配置Selenium无头无沙箱运行模式

在你的Selenium初始化代码中添加以下Chrome配置:

const { Builder } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const options = new chrome.Options();
options.addArguments('--headless=new'); // 启用新版无头模式
options.addArguments('--no-sandbox'); // 禁用沙箱(ECS环境必填)
options.addArguments('--disable-dev-shm-usage'); // 避免临时空间不足
options.addArguments('--disable-gpu'); // 禁用GPU加速
options.addArguments('--window-size=1920,1080'); // 固定窗口尺寸

const driver = new Builder()
    .forBrowser('chrome')
    .setChromeOptions(options)
    .build();

4. 优化Dockerfile构建逻辑

  • 替换COPY $PWD /crm-connector为COPY . /crm-connector,避免路径歧义
  • 合并RUN命令减少镜像层数,同时清理缓存缩小镜像体积:
FROM --platform=linux/amd64 node:16

RUN apt update && apt -y install build-essential wget \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list \
    && apt-get update && apt-get -y install google-chrome-stable libnss3 libgconf-2-4 libxss1 libasound2 libatk-bridge2.0-0 libgtk-3-0 \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /crm-connector

COPY package*.json ./
RUN node -v \
    && npm uninstall chromedriver \
    && npm install \
    && CHROME_VERSION=$(google-chrome-stable --version | grep -oP '\d+\.\d+\.\d+\.\d+') \
    && npm install chromedriver@$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION%.*}) --chromedriver-force-download

COPY . .
RUN npm run build

EXPOSE 8081
CMD [ "npm", "start" ]

5. 修正ECS任务定义的架构指定

在runtimePlatform中明确指定CPU架构,确保任务调度到X86_64实例:

"runtimePlatform": {
    "operatingSystemFamily": "LINUX",
    "cpuArchitecture": "X86_64"
}

内容的提问来源于stack exchange,提问作者Vivek Aasaithambi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:15:26