无法访问容器外部的文件夹

时间:2020-10-03 14:36:47

标签: c# docker ubuntu puppeteer-sharp

我用C#编写了一个应用程序,该应用程序需要使用chrome之类的浏览器实例。我使用以下方法对应用程序进行了docker化并运行:

sudo docker run -d --name myapp --restart=always -e BROWSER_PATH=/usr/bin/chromium-browser myimage

应用程序正确启动,但是出现以下错误:

未处理的异常:System.AggregateException:发生一个或多个错误。 (无法启动浏览器!可执行文件路径不存在)---> System.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

但是我得到了同样的错误:

无法启动浏览器!可执行文件的路径不存在

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您需要将它们安装在容器中。 https://flaviocopes.com/docker-access-files-outside-container/