无法在Docker Linux容器中启动chrome

yduiuuwa  于 2023-03-17  发布在  Linux
关注(0)|答案(3)|浏览(263)

我有一个asp.net核心应用程序,它使用jssreport nuget包来运行报告。我尝试使用linux docker容器来部署它。我似乎在运行报告时无法启动chrome。我收到错误消息:

Failed to launch chrome!  Running as root without --no-sandbox is not supported.

我已经按照.net本地报告页面(https://jsreport.net/learn/dotnet-local)上关于Docker的指示操作,但我仍然收到错误。
以下是我的完整Docker文件:

#use the .net core 2.1 runtime default image
FROM microsoft/dotnet:2.1-aspnetcore-runtime

#set the working directory to the server
WORKDIR /server

#copy all contents in the current directory to the container server directory
COPY . /server

#install node
RUN apt-get update -yq \
    && apt-get install curl gnupg -yq \
    && curl -sL https://deb.nodesource.com/setup_8.x | bash \
    && apt-get install nodejs -yq

#install jsreport-cli
RUN npm install jsreport-cli -g

#install chrome for jsreport linux
RUN apt-get update && \   
    apt-get install -y gnupg  libgconf-2-4 wget && \
    wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \
    apt-get update && \
    apt-get install -y google-chrome-unstable --no-install-recommends

ENV chrome:launchOptions:executablePath google-chrome-unstable
ENV chrome:launchOptions:args --no-sandbox

#expose port 80
EXPOSE 80

CMD dotnet Server.dll

我是不是又漏掉了什么?

wljmcqd8

wljmcqd81#

有点晚了,但可能可以帮助别人。
对我来说,在docker容器中解决这个问题所需要的唯一选择是在无头模式下运行chrome(所以原因是在测试中,而不是在dockerfile中)。

ChromeOptions options = new ChromeOptions().setHeadless(true); 
WebDriver driver = new ChromeDriver(options);

结果:现在测试成功运行,没有任何错误。

ne5o7dgx

ne5o7dgx2#

扩展Pramod的答案,我自己的问题只能通过同时运行--headless--no-sandbox标志来解决。

rqcrx0a6

rqcrx0a63#

迟来的回答,这就是我的工作ENV chrome_launchOptions_args --no-sandbox,--disable-dev-shm-usage

相关问题