繁体   English   中英

如何发送命令到Docker容器?

[英]How to send command to Docker container?

在部署过程中,文件在服务器上可用后,需要运行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

我想知道升级npm和nodejs是否有效。 这是我做的(作为root用户,而不是使用--user=laradock进入工作区容器):

cd /apps/laradock/ && docker-compose exec workspace bash
apt-get update
apt-get install -y npm
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs

(来自https://stackoverflow.com/a/34558299/470749https://askubuntu.com/a/1044694/48214

现在可以使用: docker exec -it laradock_workspace_1 /bin/sh -c "cd /var/www/myapp/ && npm run production"

如果我也能使这个类似的问题起作用,那就太好了: 如何在Docker(Laradock)中使用Deployer

PS现在,在容器外部, npm -v显示“ 6.2.0”, nodejs -v显示“ v4.2.6”,而在容器内部: npm -v显示“ 6.4.0”, nodejs -v显示“ v10.9.0”和nvm --version显示“ 0.33.8”。

我仍然不确定如何将其正确安装在Laradock Dockerfile中。 它安装nvm和npm的默认方式似乎不会使它们暴露于容器外部的命令,例如docker exec -it laradock_workspace_1 /bin/bash -c "npm -v"

12个月后更新

我在Dockerfile的底部附近添加了它(尽早添加会导致错误),它似乎可以工作:

RUN apt update && \
    apt install -y npm nodejs

#https://stackoverflow.com/a/26320915/470749
RUN ln -s /usr/bin/nodejs /usr/bin/node 

RUN npm --version && node --version

RUN npm cache clean -f && \
    npm install npm@latest -g n && \
    #npm install -g n && \
    n stable && \    
    npm --version && node --version

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM