我用C#编写了一个应用程序,该应用程序需要使用chrome之类的浏览器实例。我使用来固定应用程序和运行
sudo docker run -d --name myapp --restart=always -e BROWSER_PATH=/usr/bin/chromium-browser myimage
应用程序启动正确,但我得到以下错误:
未处理的异常:系统。AggregateException:出现一个或多个错误。(启动浏览器失败!可执行文件的路径不存在(--->系统IO.FileNotFoundException:无法启动浏览器!可执行文件的路径不存在
似乎Docker
容器无法访问位于容器外部的浏览器文件夹。
我使用puppeteer-sharp
来管理浏览器,所以抛出错误的行是愚蠢的:
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
ExecutablePath = Environment.GetEnvironmentVariable("BROWSER_PATH"),
});
正如您所看到的,我正在从一个环境变量中读取BROWSER_PATH
。
我该怎么解决这个问题?
谢谢。
更新:
我尝试使用按照建议安装音量
sudo docker run -d --name myapp --restart=always -e BROWSER_PATH=/usr/bin/chromium-browser --v "/$(pwd)/usr/bin/chromium-browser:/usr/bin/chromium-browser" myimage
但我得到了同样的错误:
无法启动浏览器!可执行文件的路径不存在
我做错了什么?
您需要将它们装载到容器中。https://flaviocopes.com/docker-access-files-outside-container/