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

.NET 8 API集成Selenium Chrome在Docker中运行失败求助

问题:.NET 8 API Docker部署后Selenium爬虫失效

背景

基于C#开发的.NET 8后端API,其中使用OpenQA.Selenium.Chrome编写的爬虫脚本在本地通过dotnet run可正常运行,但部署到Docker容器后完全无法工作。

原Dockerfile结构

FROM mcr.microsoft.com/dotnet/sdk:8.0 as build
WORKDIR "/src"

COPY ["/Solution.Project1/Solution.Project1.csproj", "Solution.Project1/"]
COPY ["/Solution.Project2/Solution.Project2.csproj", "Solution.Project2/"]
COPY ["/Solution.Project3/Solution.Project3.csproj", "Solution.Project3/"]
COPY ["/Solution.Project4/Solution.Project4.csproj", "Solution.Project4/"]

RUN dotnet restore "Solution.Project1/Solution.Project1.csproj" -s https://api.nuget.org/v3/index.json 

COPY . .

WORKDIR "/src/Solution.Project1"
RUN dotnet build "Solution.Project1.csproj" -c Debug -o /app/build

FROM build as publish
RUN dotnet publish "Solution.Project1.csproj" -c Debug -o /app/publish

ENTRYPOINT ["dotnet", "Solution.Project1.dll"]

无效的修改尝试

曾尝试在Dockerfile中加入以下内容,但无任何效果:

FROM selenium/standalone-chrome
WORKDIR /app

COPY --from=build-env /app/out .

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

运行时错误信息

调用API相关方法时抛出如下异常:

OpenQA.Selenium.NoSuchDriverException: Unable to obtain chrome using Selenium Manager; 相关文档请参考官方错误说明
OpenQA.Selenium.WebDriverException: Error starting process: /app/selenium-manager/linux/selenium-manager --browser "chrome" --output json
OpenQA.Selenium.WebDriverException: Selenium Manager process exited abnormally with 65 code: /app/selenium-manager/linux/selenium-manager --browser "chrome" --output json
Standard Output >>
{
"logs": [
{
"level": "ERROR",
"timestamp": 1706129527,
"message": "error sending request for url (googlechromelabs.github.io提供的版本下载信息JSON文件): error trying to connect: dns error: failed to lookup address information: Name does not resolve"
}
],
"result": {
"code": 65,
"message": "error sending request for url (googlechromelabs.github.io提供的版本下载信息JSON文件): error trying to connect: dns error: failed to lookup address information: Name does not resolve",
"driver_path": "",
"browser_path": ""
}
}
<<
at OpenQA.Selenium.SeleniumManager.RunCommand(String fileName, String arguments)

单独有效的Selenium配置

单独使用以下Docker配置时,容器中能正常找到chromedriver文件:

FROM selenium/standalone-chrome:latest AS base1

RUN sudo apt-get install -y wget xvfb unzip
# Set up the Chrome PPA -> (not sure if needed)
RUN sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
RUN sudo su -c "echo 'deb http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google.list"

# Update the package list
RUN sudo apt-get update -y

# Set up Chromedriver Environment variables and install chrome
ENV CHROMEDRIVER_VERSION 114.0.5735.90
ENV CHROME_VERSION 114.0.5735.90-1
RUN wget --no-verbose -O /tmp/chrome.deb "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_VERSION}_amd64.deb"
RUN sudo apt install -y --allow-downgrades /tmp/chrome.deb
RUN sudo rm /tmp/chrome.deb

ENV CHROMEDRIVER_DIR /chromedriver
RUN sudo mkdir $CHROMEDRIVER_DIR

# Download and install Chromedriver
RUN sudo wget -q --continue -P $CHROMEDRIVER_DIR "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip"
RUN sudo unzip $CHROMEDRIVER_DIR/chromedriver* -d $CHROMEDRIVER_DIR

需求

将上述Selenium配置与.NET应用的Docker配置结合后,原本有效的Selenium配置全部失效,不清楚原因,希望能通过单个Dockerfile解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:35:01