2017-02-20 26 views
0

я использую Docker версии 1.13.1, построить 092cba3 на ОС Windows 10.Доля объема данных между двумя докеров контейнерами

У меня есть пользовательский 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 для извлечения кода в объеме, который затем будет виден на (HTTPd) контейнера Apache. Поэтому каждое изменение, которое я делаю для кода из моей IDE и помещенный в Github, будет видимым в контейнере Apache. Том создается в контейнере Apache, но когда я успешно создаю код в контейнере Jenkins, он не отображается в томе в Apache.

РЕДАКТИРОВАТЬ: После запуска 2 контейнера с docker-compose up -d,

  • включить свои объемы от Kitematic
  • изменить путь громкости для Apache, чтобы указать на объем
  • и, когда Jenkins Я создаю код от Jenkins, Apache видит это, как мне хотелось бы.

Итак ... как я должен делать то же самое из файла docker-compose?

ответ

1

Вы используете volumes_from, который «копирует» определение монтирования из указанного вами контейнера. В результате, myjob_volume будет установлен на /var/jenkins_home/workspace/myjob внутри контейнера Apache. Официальное изображение Apache из концентратора Docker (https://hub.docker.com/_/httpd/) использует /usr/local/apache2/htdocs/ как веб-сайт.

Чтобы смонтировать том в этом месте, обновите файл компоновки докеров, чтобы он выглядел следующим образом:

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: 
+0

это должно быть '/ usr/local/apache2/htdocs /'? Не может быть просто что-то вроде '/ var/test' и быть тем же самым? –

+0

Несомненно, это должно быть возможно, но вам нужно будет предоставить настраиваемый файл конфигурации для apache. – thaJeztah

+0

. Пример в этом ответе в основном такой же, как пример установки «объем данных» двухсервисной установки в [официальной документации] (https://docs.docker.com/compose/compose-file/#volume-configuration-reference). – hlovdal