[英]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/470749和https://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"
。
我在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.