簡體   English   中英

不在終端中時,Docker執行“找不到命令”

[英]Docker exec “command not found” when not in terminal

我對Docker有點迷失。 我嘗試通過PM2流程管理器啟動我的NodeJS應用程序。 通用語法為pm2 start app.js

這有效:首先登錄到正在運行的docker容器:
docker exec -it mongodb-plus /bin/bash
然后在容器內,運行pm2:
root@367a1f9d1XXX:/# pm2 start app.js

失敗:但是當我嘗試在沒有交互式終端會話的情況下達到相同的效果時:
docker exec mongodb-plus /bin/bash -c "pm2 start app.js"

...它以bash: pm2: command not found失敗bash: pm2: command not found

問題:為什么bash找不到第二個變體的pm2可執行文件?


供參考-我的Dockerfile。 (它基於mongo映像,然后安裝adminMongo。):

FROM mongo
#Install basic tools via apt-get
RUN apt-get update &&\
    apt-get install -y nano git curl &&\
#Install NVM and latest LTS NodeJS vesion
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash &&\
    export NVM_DIR="$HOME/.nvm" &&\
    [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" &&\
    nvm install --lts &&\
    nvm use --lts &&\
    nvm alias default lts/* &&\
#Install adminMongo
    mkdir -p /home/srvuser/apps/adminMongo && cd /home/srvuser/apps/adminMongo && git clone https://github.com/mrvautin/adminMongo.git && mv adminMongo/* . && ls -la &&\
    npm install &&\
#Install PM2 and autostart
    npm install -g pm2 &&\
    pm2 startup
COPY ./app.json /home/srvuser/apps/adminMongo/config
#Expose mongoDB, adminMongo
EXPOSE 27017 1234

實際上我正在使用docker run --rm --name mongodb-plus -v mongodata:/data/db -p 27017:27017 -p 1234:1234 mongodb-rcore --auth

我的目標是在容器啟動時從adminMongo自動運行app.js。

我猜想更好的解決方案如下所示,而不是使用export而不是在多行中編寫節點版本,這使得修改起來更加困難:

ENV NVM_DIR /root/.nvm
ENV NODE_VERSION v0.33.2
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules #Ensure that this is the actual path
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
# Then use the NODE_VERSION do download the nodejs version you want

ENV PATH=$PATH:/root/.nvm/versions/node/v10.15.3/bin/添加ENV PATH=$PATH:/root/.nvm/versions/node/v10.15.3/bin/可以修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM