我有一个在服务器上运行Jenkins的Docker容器。我正在尝试从GitHub获取代码并将内容从Jenkins管道复制到目标目录。
我的存储库已在此处克隆:/var/jenkins_home/workspace/my-repo
我的目标目录是:/home/deploy/project
这是我的cp命令:cp -r . /home/deploy/peatio
这是错误语句:cp: cannot create directory '/home/deploy/peatio': No such file or directory
更新:我在没有Docker的情况下安装了Jenkins,并且我的用例运行良好。这是由于在Docker容器中运行Jenkins。因此,问题是,如何通过在Docker容器内运行copy命令将某些东西从Docker容器复制到本地主机?这有可能吗?我知道docker cp
,它在Docker容器外使用。
答案 0 :(得分:0)
以防万一中间目录丢失,create it/them:
mkdir -p /home/deploy/peatio
cp -r . /home/deploy/peatio
答案 1 :(得分:0)
No,无法使用-v
标志或-mount
从容器内部复制到未绑定挂载或主机与容器之间共享的其他词的主机位置。
您可以为此找到解决方法。
使用容器绑定主机的两个目录。
您与Jenkins相关的配置将保存到jenkins_host_path:/var/jenkins_home
将主机的空目录挂载到path_to_host_cp/:/jenkins_container_path_for_cp
上,因此,当您复制git repo之类的东西时,请将其复制到/jenkins_container_path_for_cp
上,它将可用于托管,并且如果您要更新新的主机位置上的文件只需在容器中运行rm
,然后运行cp -r . /home/deploy/peatio
或cp -r . jenkins_container_path_for_cp
。
您还可以通过入口点在容器启动时将文件和文件夹从一个位置复制到另一个位置,以托管空目录,就好像该目录中有什么主机将隐藏容器内容一样。
答案 2 :(得分:0)
$ export JENKINS_HOME=/srv/jenkins
$ export TARGET_DIR=/home/deploy/peatio
$ docker run ***(ignore other important parameters) -v $JENKINS_HOME:/var/jenkins_home -v $TARGET_DIR:/home/deploy/peatio
重要参数: -v $TARGET_DIR:/home/deploy/peatio
$ docker exec -it jenkins bash
$ cp -r . /home/deploy/peatio