在我的部署过程中,我需要运行 npm run production
文件在服务器上可用后。
由于我部署到 Docker 容器,我想我需要运行类似的东西:
cd /apps/laradock/ && docker-compose exec -T workspace bash -c "cd /var/www/myapp/ && npm run production"
不幸的是,这会产生错误:
bash: npm: command not found
但是 npm 在容器外部和内部都可用!
- 在容器外,
which npm
产生/home/serviceUser/.nvm/versions/node/v10.9.0/bin/npm
- 如果我通过
cd /apps/laradock/ && docker-compose exec workspace bash
进入容器然后运行which npm
,它也安装在那里(并显示/home/laradock/.nvm/versions/node/v10.9.0/bin/npm
)。
我做错了什么?
最佳答案
这里有 2 个选项。
1) 使用 npm 二进制文件的完整路径;而不是使用 npm run production
使用 /home/laradock/.nvm/versions/node/v10.9.0/bin/npm run production
2) 将 nvm 添加到您的 .bashrc(如果您使用 bash)以便获取它,以便您可以直接输入 nvm:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
不确定你是如何安装 nvm 的,因为如果你按照他们的 github 页面的安装说明进行操作,那么它应该已经添加到你的 .bashrc 文件中
有关如何安装 nvm、获取它并使用它的更多信息,您可以查看以下链接: https://github.com/creationix/nvm#install-script
关于node.js - 如何向Docker容器发送命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046648/