jenkinsci / docker-安装的库在重建中不持久

时间:2018-06-19 14:55:33

标签: docker jenkins

我正在使用jenkinssci/docker在服务器上为laravel项目设置一些构建自动化。

使用命令$(this).context.readOnly == false / true ,一切正常启动,我创建了管理员登录名,创建了项目并将所有这些链接在一起。

昨天,我将库下载到该命令在docker中使用docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts给我的容器中,该容器以root身份进入容器以安装php,composer,noodejs / npm之类的东西。完成之后,我构建了项目,并成功构建了一个构建。

今天,我使用相同的上述命令启动docker容器,构建项目,构建失败。该容器不再具有任何已下载的库(php,composer,node)。

据我了解,在启动docker容器的命令中包含docker exec -u 0 -it <container_name_or_id> /bin/bash时,数据将持续存在。错了吗?

所以我的问题是,我该怎么做才能将这些库保留在它构建的docker容器中?

昨天我才刚刚开始学习这些工具,所以我不确定自己是否做得最好。我需要做的就是能够登录到Jenkins的服务器,并将项目/代码移植到我们的暂存/实时服务器中。

旁注:我当前未使用Dockerfile。 as mentioned here我能够以根用户身份下载容器中的工具。

2 个答案:

答案 0 :(得分:0)

您的理解是正确的:您应该使用永久卷,否则每次重新创建容器时都会丢失数据。

答案 1 :(得分:0)

我知道您正在使用docker在单台机器上运行容器。您需要在卷定义的本地文件夹上放置完整路径或相对路径,以确保数据持久存在,请尝试:

docker run -p 8080:8080 -p 50000:50000 -v ./jenkins_home:/var/jenkins_home jenkins/jenkins:lts

查看本地文件夹上的./

这是我长期使用的docker-compose.yml

version: '2'
services:
  jenkins:
    image: jenkins/jenkins:lts
    volumes:
      - ./jenkins:/var/jenkins_home
    ports:
      - 80:8080
      - 50000:50000

基本相同,但格式为yaml