У меня есть следующий файл compose, в котором я делюсь некоторыми сгенерированными данными html из контейнера Jenkins на диск хоста и считываю эти данные в контейнере Nginx с диска хоста. Я использую Ubuntu Server 18.04 на AWS.
Проблема в том, что я могу прочитать содержимое jenkins/workspace/allure-report
только один раз. После обновления данных html они становятся недоступными для Nginx и выдают код состояния 403.
Я перепробовал все возможные решения, но ничего не работает. Единственное безобразное решение - перезапускать контейнер Nginx после каждого обновления данных html. Мне не нравится этот способ, и я ищу некоторые встроенные функции docker, чтобы решить эту проблему.
Что не помогло: прямое распределение тома между контейнерами без использования хост-диска docker с использованием опции rslave
, используя docker отдельный том, который можно использовать в качестве буфера между двумя контейнерами ... Я считаю, что это должно быть намного проще!
version: '2'
services:
jenkins:
container_name: jenkins
image: "jenkins/jenkins"
ports:
- "8088:8080"
- "50000:50000"
env_file:
- variables.env
volumes:
- ./jenkins:/var/jenkins_home
selenoid:
container_name: selenoid
network_mode: bridge
image: "aerokube/selenoid"
# default directory for browsers.json is /etc/selenoid/
command: -listen :4444 -conf /etc/selenoid/browsers.json -video-output-dir /opt/selenoid/video/ -timeout 3m
ports:
- "4444:4444"
env_file:
- variables.env
volumes:
- $PWD:/etc/selenoid/ # assumed current dir contains browsers.json
- /var/run/docker.sock:/var/run/docker.sock
selenoid-ui:
container_name: selenoid-ui
network_mode: bridge
image: "aerokube/selenoid-ui"
links:
- selenoid
ports:
- "8080:8080"
env_file:
- variables.env
command: ["--selenoid-uri", "http://selenoid:4444"]
nginx:
container_name: nginx
image: "nginx"
ports:
- "80:80"
volumes:
- ./jenkins/workspace/allure-report:/usr/share/nginx/html:ro,rslave