node.js - 如何向Docker容器发送命令?

标签 node.js bash docker npm deployment

在我的部署过程中,我需要运行 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/

相关文章:

javascript - 使用正确的数组响应 HTTP 请求时出现问题。使用expressjs从函数内发送结果的可能方法?

Docker 容器中的 MySQL 绑定(bind)地址

bash - 设置只读变量时未调用 ERR 陷阱

postgresql - Adminer & Migrate 无法连接到 Postgresql Docker 容器

docker - 运行docker Windows镜像时无法启动Sonatype Nexus3服务

node.js - typescript :按值或按引用传递

javascript - 如何在 Javascript 中向 Excel 文件添加条件格式?

javascript - 检查discord角色是否高于另一个角色

linux - Ansible:重启消耗内存 > 75% 的进程

linux - 使用linux脚本发送电子邮件