繁体   English   中英

在两个Docker容器之间共享数据量

[英]Share a data volume between two docker containers

我使用Docker版本1.13.1,在Windows 10上构建092cba3。

我有一个自定义的Jenkins容器,可从Github批量构建代码。

该卷是/var/jenkins_home/workspace/myjob

我还有一个要与之共享卷的Apache容器。

docker-compose.yml文件为:

version: '2'

services:

  jenkins:
    container_name: jenkins
    image: jenkins:v1
    environment:
      JAVA_OPTS: "-Djava.awt.headless=true"
      JAVA_OPTS: "-Djenkins.install.runSetupWizard=false" # Start jenkins unlocked
    ports:
  #    - "50000:50000" # jenkins nodes
      - "8686:8080" # jenkins UI
    volumes:
      - myjob_volume:/var/jenkins_home/workspace/myjob

  apache:
    container_name: httpd
    image: httpd:2.2
    volumes_from:
      - jenkins

volumes:
  myjob_volume:

我基本上希望Jenkins容器在volume中获取代码,然后该代码将由Apache(httpd)容器可见。 因此,我对IDE中的代码进行的每一次更改并推送到Github都将在Apache容器中可见。 该卷是在Apache容器中创建的,但是当我在Jenkins容器中成功构建代码时,它不会出现在Apache的卷中。

编辑:docker-compose up -d启动2个容器docker-compose up -d

  • 我从Kitematic启用它们的卷
  • 我更改了Apache的卷路径以指向Jenkins卷
  • 当我从詹金斯(Jenkins)构建代码时,Apache会按照我的意愿看到它。

所以...我该如何从docker-compose文件中做同样的事情?

您正在使用volumes_from ,它从您指定的容器中“复制”安装定义。 结果, myjob_volume将安装在Apache容器内的/var/jenkins_home/workspace/myjob中。 来自Docker中心( https://hub.docker.com/_/httpd/ )的官方Apache映像使用/usr/local/apache2/htdocs/作为webroot。

要将卷安装在该位置,请更新docker-compose文件,如下所示:

version: '2'

services:

  jenkins:
    container_name: jenkins
    image: jenkins:v1
    environment:
      JAVA_OPTS: "-Djava.awt.headless=true"
      JAVA_OPTS: "-Djenkins.install.runSetupWizard=false" # Start jenkins unlocked
    ports:
  #    - "50000:50000" # jenkins nodes
      - "8686:8080" # jenkins UI
    volumes:
      - myjob_volume:/var/jenkins_home/workspace/myjob

  apache:
    container_name: httpd
    image: httpd:2.2
    volumes:
      - myjob_volume:/usr/local/apache2/htdocs/

volumes:
  myjob_volume:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM