我正在与一个社区开发的 OpenShift 卡带 https://github.com/gsterjov/openshift-nginx-cartridge对于 nginx。墨盒的构建脚本(无需任何修改)运行良好;它使用我提供的配置文件启动 nginx 服务器。但是,我正在尝试修改构建脚本,以便它首先将目录更改为我的 OpenShift 存储库,然后运行npm install
进而grunt build
构建我创建的 Angular 应用程序。
当我这样做时,我不断收到错误EACCES, mkdir '/var/lib/openshift/xxxxxxxxxx/.npm'
当脚本到达时npm install
. Some OpenShift 论坛帖子 https://www.openshift.com/forums/openshift/php-53-cartridge-npm-not-working-quickfix已尝试解决该问题,但似乎需要不同的解决方案(至少在我的情况下)。
因此,我感兴趣的是是否可以以这种方式使用 npm,或者我是否需要创建一个自己完成所有这些操作的盒式磁带。
由于我们通常没有创建所需的访问权限~/.npm
,我们必须找到移动 npm 缓存的方法(通常~/.npm
)和 npm 用户配置(通常~/.npmrc
) 到可访问的文件夹以使事情顺利进行。以下信息部分来自错误报告 https://bugzilla.redhat.com/show_bug.cgi?id=1147762我就此事向 Redhat 提交了。
我们必须首先创建一个环境变量控制 .npmrc 的位置 https://www.npmjs.org/doc/misc/npm-config.html。我创建了一个名为的文件(可以通过 shell 访问我的应用程序).env
in $OPENSHIFT_DATA_DIR
。在此文件中,我放置了:
export NPM_CONFIG_USERCONFIG=$OPENSHIFT_HOMEDIR/app-root/build-dependencies/.npmrc
这移动了.npmrc
目录到我们有读/写权限的地方。当然,我还必须创建目录.npmrc
in $OPENSHIFT_HOMEDIR/app-root/build-dependencies/
。然后,在我的预启动 webhook/构建脚本的早期,我放置了:
touch $OPENSHIFT_DATA_DIR/.env
这确保了配置位置的环境变量.npmrc
每次我们部署/构建时都可以访问。现在我们可以移动 npm 缓存的位置。从跑步开始touch
on the .env
手动创建文件,并创建.npm
目录在$OPENSHIFT_HOMEDIR/app-root/build-dependencies/
。运行以下命令完成重新配置:
npm config set cache $OPENSHIFT_HOMEDIR/app-root/build-dependencies/.npm
现在,即使我们不使用 NodeJS 盒,每次部署时也应该可以访问 NPM。上述目录选择可以根据需要进行更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)