如何在没有root的jenkins blue ocean管道中运行docker并将容器作为我们的虚拟环境运行

时间:2018-06-07 13:02:25

标签: jenkins

我刚刚开始使用jenkins并且遇到了$ PATH的问题,所以我决定将自己的docker镜像写为要在其中使用的环境。这是我的Jenkins文件,用于测试它是否有效:

pipeline {
  agent {
    docker {
      image: custom-alpine-nodejs:latest
      -p 3000:3000
    }
  }
  stages {
    stage('build') {
      steps {
        // this return root instead of user which i created in my image
        // the image i build, run locally and enter whoami output
        // the user that i created in the image as expected, except inside jenkins
        sh 'whoami'

        // doing nvm install 8.11.2 result in nvm not found
        // but running the image i build locally works just fine
        sh 'nvm install 8.11.2' // not work
        nvm install 8.11.2 // tested this also not work
      }
    }
  }
}

这是我的nodejs.Dockerfile

FROM alpine:3.6

RUN adduser -D -g "" jenkins-runner && \
  touch /home/jenkins-runner/.bashrc /home/jenkins-runner/.profile /home/jenkins-runner/.zshrc &&\
  chown -R jenkins-runner:jenkins-runner /home/jenkins-runner && \
  apk -q update && \
  apk -q add git curl bash

USER jenkins-runner

RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash && \
  export NVM_DIR="$HOME/.nvm" && \
  [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

CMD ["/bin/bash"]

我的Dockerfile在本地执行时按预期运行,我可以运行容器并执行nvm installwhoami将返回jenkins-runner,除了jenkins之外,所有内容都按预期工作。

这只是我的一个Dockerfile,我准备了nodejs.Dockerfile,meteor.Dockerfile,flask.Dockerfile,elixir.Dockerfile,go.Dockerfile,当我在他们做CI时他们看起来只是为我未来的东西做准备similiar。

如果没有这方面的解决方案,如果有人可以告诉我如何进入jenkins,我也会很感激,我可以像处理我的Linux机器一样处理环境,但是我想要的还有非root用户我需要能够运行我的应用程序进行测试或ci / cd。

我正在使用jenkins blue ocean plugin btw。

0 个答案:

没有答案