我得到了以下撰写文件,其中我将一些生成的html数据从Jenkins容器共享到主机驱动器,并通过Nginx容器从主机驱动器读取此数据。我在AWS上使用Ubuntu Server 18.04。
问题是我只能读取一次jenkins/workspace/allure-report
的内容。更新html数据后,Nginx无法访问它,并抛出403状态代码。
我尝试了所有可能的解决方案,但没有任何效果。唯一的难看的解决方案是在每次html数据更新后重新启动Nginx容器。我不喜欢这种方式,正在寻找一些内置的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
答案 0 :(得分:0)
找到了解决方案:访问动态数据的最简单方法是在要查看的容器中使用 volumes_from 。
当我像这样配置撰写文件时,我遇到了另一个问题-403状态消失了,但是数据是静态的。但这是我的错,我没有正确使用“ cp -r”命令,因此我的数据仅被复制了一次。