2
  • 最佳答案

    这个问题你自己应该可以解决呀。


    你前面输出了环境变量


    你调用了你的test.sh这个脚本。


    然后报错npm: command not found


    也就是说你的npm没有,也就是说你没有安装node.js


    那你确定一下你的脚本运行环境是在哪里?是在docker的容器里呢?还是你本机上?


    应该是在你的docker容器里。你想想,如果你的docker容器直接调用你宿主机的命令,那能容器隔离吗?


    所以你的容器应该要有node.js才可以不报错。

    1153952789488054272  评论     打赏       拉大锯
    • 断点-含光君  回复 @拉大锯
      我刚刚也想到这个了,也尝试了拉取镜像,然后启动了node。但是还是找不到。是还需要做什么配置吗。我再搜索下
      断点-含光君 2021-02-08 16:57   回复 1139423796017500160
    • 拉大锯  回复 @断点-含光君
      容器内部安裝node.js不是单独一个镜像。我也没有用过docker来使用jenkins,我本地装。你捋清楚宿主机,容器之关的关系和运行环境应该就可以了。或者你直接找别人docker部署Jenkins的文章看看即可。
      拉大锯 2021-02-08 17:08   回复 1153952789488054272
    • 断点-含光君  回复 @拉大锯
      解决方法就是,不使用容器,直接在主机安装启动Jenkins,这样可以使用本地环境变量。因为容器内的环境和外部不一致。目前还没有找到如何同步或者如何获得环境变量的方法。
      断点-含光君 2021-02-09 09:17   回复 1139423796017500160
  • 补充下test.sh文件的内容

    #!/bin/bash
    echo "npm test--------------->"
    npm -v
    
    1139423796017500160  评论     打赏       断点-含光君
    • 断点-含光君  回复 @断点-含光君
      在本地环境中,执行node -v 和npm -v都是正常的。
      断点-含光君 2021-02-08 15:57   回复 1139423796017500160
    • 断点-含光君  回复 @断点-含光君
      直接cd到sh目录下执行./test.sh也是正常的。
      断点-含光君 2021-02-08 15:59   回复 1139423796017500160
    • 断点-含光君  回复 @断点-含光君
      问题新进展,发现了sh打印的path和主机打印的path不同。 /usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
      断点-含光君 2021-02-08 16:08   回复 1139423796017500160
    • 断点-含光君  回复 @断点-含光君
      这个是主机打印的:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/jre/bin:/usr/local/nodejs/bin
      断点-含光君 2021-02-08 16:08   回复 1139423796017500160
    • 断点-含光君  回复 @断点-含光君
      主机打印的是有nodejs环境变量的。所以,在docker中的容器执行脚本的时候,容器的环境和主机的不一致,或者只有部分。怎么才能一样呢。
      断点-含光君 2021-02-08 16:09   回复 1139423796017500160
相关问题
豪豪好嘛 · xshell
2019-12-04 02:13 410 5
幻影~ · 提问
2024-04-13 20:13 2 2
幻影~ · 找工作
2024-04-07 10:44 11 2
幻影~ · 问题
2024-03-31 17:20 7 2
TONYGFX · AOSP
2024-03-28 17:11 4 2