У меня есть следующий файл компоновки, в котором я делюсь некоторыми сгенерированными html-данными из контейнера Jenkins на хост-диск и читаю эти данные контейнером Nginx с хост-диска. Я использую Ubuntu Server 18.04 на AWS.
Проблема в том, что я могу прочитать содержимое jenkins/workspace/allure-report
только один раз. После обновления данных html он становится недоступным для Nginx и выдает код состояния 403.
Я пробовал все возможные решения, но ничего не работает. Единственное уродливое решение — перезапускать контейнер Nginx после каждого обновления html-данных. Мне не нравится этот способ, и я ищу некоторые встроенные функции докера, чтобы решить эту проблему.
Что не помогло: совместное использование тома напрямую между контейнерами без использования хост-диска докера, использование опции rslave
, использование отдельного тома докера, который можно использовать в качестве буфера между двумя контейнерами... Я считаю, что это должно быть намного проще!
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