【问题标题】:Failed to install Puppeteer and Chromium with Bit-bucket's pipeline to AWS Elastic Beanstalk使用 Bit-bucket 的管道将 Puppeteer 和 Chromium 安装到 AWS Elastic Beanstalk 失败
【发布时间】:2020-10-25 18:39:13
【问题描述】:

我使用 Bitbucket 的管道将 Node.js express 部署到 AWS Elastic beanstalk。

代码包括安装Puppeteer v5.0.0 安装时会下载 Chromium。

下载 Chromium 时由于访问权限导致部署失败,见下图: 错误:无法下载 Chromium r756035!设置“PUPPETEER_SKIP_CHROMIUM_DOWNLOAD”环境变量以跳过下载。 错误:EACCES:权限被拒绝,mkdir '/tmp/deployment/application/node_modules/puppeteer/.local-chromium'

如何设置权限以使安装成功完成?

【问题讨论】:

标签: node.js amazon-elastic-beanstalk puppeteer bitbucket-pipelines


【解决方案1】:

只需在 nodeAPP 的根目录中添加 .npmrc 文件,其中包含以下内容:

unsafe-perm=true

这将强制 NPM 尝试始终在运行脚本的上下文中运行。所以你不会被'permission denied'屏蔽

【讨论】:

    【解决方案2】:

    GitHub 存储库维护@https://github.com/amarinediary/Marionette。以下内容可能不是最新的。有关维护版本,请参阅 GitHub 链接。


    您可以将 AWS Elastic Beanstalk 配置文件 (.ebextensions) 添加到 Web 应用程序的源代码中,以配置您的环境并自定义其中包含的 AWS 资源。

    在我们的例子中,如果我们不启用 EPEL 并且如果我们继续安装 Chromium 作为 npm install 的一部分,Puppeteer 将无法启动 Chromium,因为 libatk-1.0.so.0 不可用。

    修补程序

    将以下内容添加到您的应用根目录:

    1. 创建一个.npmrc 文件。
    2. 将以下内容添加到您的 .npmrc 文件中:
    unsafe-perm=true
    

    .npmrc 文件定义了 npm 在运行命令时的行为方式。将unsafe-perm 设置为true 会在运行包脚本时抑制UID/GID 切换。设置 unsafe-perm 标志以使用 root 权限运行脚本。

    1. 创建一个.ebextensions 文件夹。
    2. .ebextensions 文件夹中,创建一个01_enableEPEL.config 文件并添加以下内容。
    commands:
      01_enableEPEL:
        command: sudo amazon-linux-extras install epel -y
    
    1. .ebextensions 文件夹中,创建一个02_installEPELPackages.config 文件并添加以下内容
    packages:
      yum:
        chromium: []
    

    【讨论】:

    • 很好的答案!非常感谢!
    猜你喜欢
    • 2017-01-24
    • 1970-01-01
    • 2014-11-15
    • 2018-12-10
    • 2018-07-01
    • 2020-11-24
    • 2014-10-27
    • 2015-12-15
    • 2020-04-11
    相关资源
    最近更新 更多