docker 下运行 jenkins 的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pipixia
V2EX    Docker

docker 下运行 jenkins 的问题

  •  
  •   pipixia 2019-03-22 12:38:38 +08:00 via Android 6821 次点击
    这是一个创建于 2401 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为官方 jenkins 附带的 java 是 openjdk

    我想再安装一个官方版本的 jdk,maven 插件中也把这个新 jdk 的路径配置上去了

    但是在运行打包的时候 怎么提示我文件找不到

    10 条回复    2019-03-26 09:48:27 +08:00
    yuikns
        1
    yuikns  
       2019-03-22 12:53:11 +08:00
    没看懂说明...
    来个 Dockerfile 和 error message?
    pipixia
        2
    pipixia  
    OP
       2019-03-22 13:24:04 +08:00
    @yuikns

    您好 信息如下
    Dockerfile:
    FROM jenkins
    USER root
    ADD jdk-8u201-linux-x64.tar.gz /var
    ENV JAVA_HOME /var/jdk1.8.0_201
    ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/jdk1.8.0_201/bin:/var/jdk1.8.0_201/bin

    Error:
    Established TCP socket on 45516
    [qf_build] $ /var/jdk1.8.0_201/bin/java -cp /var/jenkins_home/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.12.jar:/var/tools/apache-maven-3.6.0/boot/plexus-classworlds-2.5.2.jar:/var/tools/apache-maven-3.6.0/conf/logging jenkins.maven3.agent.Maven35Main /var/tools/apache-maven-3.6.0 /var/jenkins_home/war/WEB-INF/lib/remoting-3.27.jar /var/jenkins_home/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.12.jar /var/jenkins_home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.12.jar 45516
    ERROR: Failed to parse POMs
    java.io.IOException: Cannot run program "/var/jdk1.8.0_201/bin/java" (in directory "/var/jenkins_home/workspace/qfs_build"): error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at hudson.Proc$LocalProc.<init>(Proc.java:249)
    at hudson.Proc$LocalProc.<init>(Proc.java:218)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:936)
    at hudson.Launcher$ProcStarter.start(Launcher.java:455)
    at hudson.maven.AbstractMavenProcessFactory.newProcess(AbstractMavenProcessFactory.java:278)
    at hudson.maven.ProcessCache.get(ProcessCache.java:236)
    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:804)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
    at hudson.model.Run.execute(Run.java:1810)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
    at hudson.model.ResourceController.execte(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
    Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 12 more
    Finished: FAILURE
    pipixia
        3
    pipixia  
    OP
       2019-03-22 13:25:48 +08:00
    @yuikns 我手动进入目录下 执行 java -version 是有效的 ,但是如果打全路径名像报错信息那样就会提示找不到文件
    passerbytiny
        4
    passerbytiny  
       2019-03-22 13:28:52 +08:00
    首先,docker jenkins 只是一个专用来做部署的容器,没必要再独立安装 JDK。
    其次,你的容器中, /var/jdk1.8.0_201 根本不存在,因为你只传过去了 tar.gz ,没解压。
    pipixia
        5
    pipixia  
    OP
       2019-03-22 13:41:12 +08:00 via Android
    @passerbytiny 解压了 我特意去容器中执行了一下 您的意思是 docker Jenkins 不建议用来打包而是偏向部署这样吗?
    yuikns
        6
    yuikns  
       2019-03-22 13:52:44 +08:00
    ADD 后没有解压。
    Dockerfile 里面完全没这个。

    你在容器( container )里面执行,和 image 没有任何关系。

    https://github.com/jenkinsci/docker/blob/587b2856cd225bb152c4abeeaaa24934c75aa460/Dockerfile

    看人家 jenkins,它的 upstream 就是 openjdk:8-jdk,不需要再来自己 ADD 一遍。

    openjdk:8-jdk 的 dockerfile https://github.com/docker-library/openjdk/blob/c3023e4da10d10e9c9775eabe2d7baac146e7ae1/8/jdk/Dockerfile

    人家已经设置了 ENV JAVA_HOME /docker-java-home
    你就别自己再折腾了
    passerbytiny
        7
    passerbytiny  
       2019-03-22 18:09:33 +08:00
    @pipixia #5 jenkins 镜像原本就带 Java,你容器中执行的时候它使用的就是自带的 java,跟你额外添加的 JDK 没有关系。你自己添加的 JDK 就只有 jdk-8u201-linux-x64.tar.gz 这各文件。
    colinsnow
        8
    colinsnow  
       2019-03-22 19:29:01 +08:00 via Android
    ADD 本地的 tar 文件会自动解压的
    yuikns
        9
    yuikns  
       2019-03-23 05:53:25 +08:00
    @colinsnow @passerbytiny

    https://docs.docker.com/engine/reference/builder/#add : If <src> is a local tar archive in a recognized compression format (identity, gzip, bzip2 or xz) then it is unpacked as a directory.

    学习了!我自己基于 fedora 和 openjdk:8-jdk 写了下 Dockerfile,的确可以在那个目录产生对应文件,而且貌似也能跑。

    因此有理由相信 ADD 那一层 layer 后 /var/jdk1.8.0_201/bin/java 应该是没有问题的。只是一个比较显著的问题,楼主用 /docker-java-home/bin/java,它的版本也是 1.8.0_181-8u181-b13-2~deb9u1-b13 64 bit,应该完全就够了。不必额外添加。


    此外,我故意用一个错误的目录,报错如下:

    /bin/sh: 1: /docker-java-home/bin2/java: not found
    The command '/bin/sh -c /docker-java-home/bin2/java -version' returned a non-zero code: 127

    因此那个

    java.io.IOException: Cannot run program "/var/jdk1.8.0_201/bin/java" (in directory "/var/jenkins_home/workspace/qfs_build"): error=2, No such file or directory

    这个的意思是不是说 qfs_build 这个 workspace 不存在啊?

    可以在这个提示错误的 layer 前面试试

    RUN ls -al /var/jenkins_home/workspace/

    qfs_build 可能不出现?
    pipixia
        10
    pipixia  
    OP
       2019-03-26 09:48:27 +08:00 via Android
    @yuikns 和 jenkins 的人邮件讨论过 他说也可能是 openjdk 的基础镜像问题导致的 他的建议是换用其他 linux 发行版自定义 docker 镜像使用。经过测试 确实换用之后能正常打包运行了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2569 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 14:41 PVG 22:41 LAX 07:41 JFK 10:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86