我有一个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
我是不是又漏掉了什么?
3条答案
按热度按时间wljmcqd81#
有点晚了,但可能可以帮助别人。
对我来说,在docker容器中解决这个问题所需要的唯一选择是在无头模式下运行chrome(所以原因是在测试中,而不是在dockerfile中)。
结果:现在测试成功运行,没有任何错误。
ne5o7dgx2#
扩展Pramod的答案,我自己的问题只能通过同时运行
--headless
和--no-sandbox
标志来解决。rqcrx0a63#
迟来的回答,这就是我的工作
ENV chrome_launchOptions_args --no-sandbox,--disable-dev-shm-usage