我使用 Jenkins Docker 插件来构建我的图像(这有效),我可以使用类似的命令很好地运行容器
docker run test-env:latest /etc/bootstrap.sh -jenkins
但是,当我跑步时
docker run -u root -v $WORKSPACE:/test test-env:latest /etc/bootstrap.sh -jenkins
我遇到了一些问题。卷 /test 存在于容器中,但它不包含 $WORKSPACE 拥有的任何文件。在运行我的 docker 容器之前,我做了一个
cd $WORKSPACE && ls -al
其中显示以下内容:
total 52
drwxr-xr-x 10 root root 4096 Sep 3 15:49 .
drwxr-xr-x 3 root root 4096 Sep 3 15:49 ..
drwxr-xr-x 8 root root 4096 Sep 3 15:49 .git
-rw-r--r-- 1 root root 361 Sep 3 15:49 .gitignore
-rw-r--r-- 1 root root 71 Sep 3 15:49 README.md
drwxr-xr-x 3 root root 4096 Sep 3 15:49 bin
-rw-r--r-- 1 root root 1900 Sep 3 15:49 build.sbt
drwxr-xr-x 3 root root 4096 Sep 3 15:49 conf
drwxr-xr-x 2 root root 4096 Sep 3 15:49 docs
drwxr-xr-x 2 root root 4096 Sep 3 15:49 lib
drwxr-xr-x 2 root root 4096 Sep 3 15:49 project
drwxr-xr-x 3 root root 4096 Sep 3 15:49 scripts
drwxr-xr-x 4 root root 4096 Sep 3 15:49 src
并查看我想与容器共享的 git 存储库(test_repo),其中包含所有正确的文件,但是当我这样做时在容器内
cd /test && ls -al
我只看到
total 16
drwxr-xr-x 4 root root 4096 Sep 2 14:30 .
drwxr-xr-x 1 root root 4096 Sep 3 10:27 ..
drwxr-xr-x 3 root root 4096 Sep 2 13:26 test_repo
drwxr-xr-x 5 root root 4096 Sep 2 14:30 target
两者都不包含我的代码,我通过使用 $WORKSPACE/test_repo 和 $WORKSPACE/target 作为我挂载的卷进一步测试验证了这些代码。
为什么容器中看不到我的 $WORKSPACE 文件?我怎样才能让它正常工作?
编辑: $WORKSPACE 的值 = /var/tmp/workspace/test-jenkins 其中 test-jenkins 是我的 Jenkins 工作的名称