开发者社区 > 云原生 > Serverless > 正文

在阿里函数计算中,我在nodejs16环境中添加了一个自定义层,层里面的内容是chrome之后咋搞?

在阿里函数计算中,我在nodejs16环境中添加了一个自定义层,层里面的内容是chrome,当我尝试运行该chrome是,提示没有权限执行 Failed to launch the browser process! spawn /opt/chrome-linux-118_0_5993_70/chrome EACCES,我应该如何添加权限呢?

展开
收起
小小鹿鹿鹿 2023-10-30 22:12:30 36 0
5 条回答
写回答
取消 提交回答
  • 代码写个 hello world 然后登录到实例里面 cd 到 /opt 目录下直接起一下试试 看看报什么错。1. 用容器镜像来写业务。bb77c81dda7079281eb532467670324a.png

    1. 使用我们准备好的示例代码和准备好的层
    2. 自己在层里安装好缺少的 apt 依赖ec510e3ba0dd8ae62aaadc43f88005f5.png要用方案3的话可以参考 https://developer.aliyun.com/article/1323852?spm=a2c6h.13262185.profile.12.6f0d3c66QTKEFD。此回答来自钉群阿里函数计算官网客户。
    2023-10-31 22:21:33
    赞同 展开评论 打赏
  • 在阿里函数计算中,您可以尝试以下方法来添加权限:

    1. 更改chrome可执行文件的权限。您可以使用chmod命令来更改文件权限,例如:
    sudo chmod +x /opt/chrome-linux-118_0_5993_70/chrome
    
    1. 将chrome可执行文件移动到一个具有执行权限的目录,例如/usr/local/bin
    sudo mv /opt/chrome-linux-118_0_5993_70/chrome /usr/local/bin/chrome
    

    然后,您需要确保在您的自定义层中引用的是这个新的可执行文件路径。例如,如果您在package.json文件中指定了chrome作为启动命令,您需要将其更改为:

    {
      "scripts": {
        "start": "/usr/local/bin/chrome"
      }
    }
    
    1. 如果问题仍然存在,您可以尝试在运行自定义层时使用--no-sandbox选项,以允许Chrome在无沙箱模式下运行。例如:
    node --no-sandbox your-custom-layer.js
    

    请注意,这些方法可能需要根据您的具体环境和需求进行调整。希望这对您有所帮助!

    2023-10-31 20:07:00
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    由于安全性考虑,自定义层默认不允许直接执行,以避免恶意攻击。要使用 Chrome,可以采取以下措施:

    1. 修改 Dockerfile,在启动时增加 exec 标记,例如 run chmod +x chrome;
    2. 添加运行权限:chown -R your-user /opt/chrome-linux-118_0_5993_70;
    3. 使用 chgrp 命令添加执行权限:chgrp -R user-name /opt/chrome-linux-118_0_5993_70/chrome;
    4. 使用 chown 命令赋予权限:chmod +x /opt/chrome-linux-118_0_5993_70/chrome。
    2023-10-31 13:31:08
    赞同 展开评论 打赏
  • 在阿里云函数计算中,当你在Node.js 16环境中添加了一个自定义层并试图运行Chrome时,出现"Failed to launch the browser process! spawn /opt/chrome-linux-118_0_5993_70/chrome EACCES"的错误,这是因为Chrome的二进制文件没有执行权限。

    你可以使用以下命令来为Chrome的二进制文件添加执行权限:

    chmod +x /opt/chrome-linux-118_0_5993_70/chrome
    

    这条命令会为"/opt/chrome-linux-118_0_5993_70/chrome"这个文件添加执行权限。

    但是,这种方法只能解决一次的问题。每次重启函数实例后,Chrome的二进制文件的执行权限都会丢失,因为函数计算会在每次重启函数实例时重新下载并解压Chrome的二进制文件。

    为了解决这个问题,你可以使用阿里云函数计算的"持久化存储"功能。你可以将Chrome的二进制文件保存在持久化存储中,然后在每次函数实例启动时,从持久化存储中读取并运行Chrome的二进制文件。这样可以确保Chrome的二进制文件始终保持执行权限。

    2023-10-31 10:20:49
    赞同 展开评论 打赏
  • 在Linux环境中运行Chrome需要具有一定的权限。为了使Chrome可以在自定义层中运行,需要赋予它足够的权限。为此,可以通过以下步骤来增加自定义层中Chrome的权限:

    1. 运行命令 chown -R 用户名 自定义层路径 来将所有者更改为运行函数计算的用户。这样可以使Chrome拥有适当的权限。
    2. 尝试再次运行Chrome,以确认其是否可以正常启动。如果Chrome仍然无法运行,请继续下一步骤。
    3. 您可能还需要授予Chrome可执行权限,以便它可以被运行。为此,请运行 chmod +x 自定义层路径/chrome 以给Chrome文件赋予可执行权限。
    4. 再次运行Chrome,确认其是否可以正常启动。
    2023-10-31 09:56:05
    赞同 1 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    All in Serverless 阿里云核心产品全面升级 立即下载
    AIGC 浪潮之上,森马的 Serverless 实践之旅 立即下载
    极氪大数据 Serverless 应用实践 立即下载