【发布时间】:2019-01-05 10:37:27
【问题描述】:
我正在尝试允许nginx 在多个容器之间进行代理,同时还可以访问这些容器中的静态文件。
要在使用 docker compose 创建的容器之间共享卷,以下方法可以正常工作:
version: '3.6'
services:
web:
build:
context: .
dockerfile: ./Dockerfile
image: webtest
command: ./start.sh
volumes:
- .:/code
- static-files:/static/teststaticfiles
nginx:
image: nginx:1.15.8-alpine
ports:
- "80:80"
volumes:
- ./nginx-config:/etc/nginx/conf.d
- static-files:/static/teststaticfiles
depends_on:
- web
volumes:
static-files:
但是,我真正需要的是 nginx 撰写文件位于单独的文件中,并且位于完全不同的文件夹中。换句话说,docker compose up 命令将单独运行。我尝试了以下方法:
第一个撰写文件:
version: '3.6'
services:
web:
build:
context: .
dockerfile: ./Dockerfile
image: webtest
command: ./start.sh
volumes:
- .:/code
- static-files:/static/teststaticfiles
networks:
- directorylocation-nginx_mynetwork
volumes:
static-files:
networks:
directorylocation-nginx_mynetwork:
external: true
第二个撰写文件(即:nginx):
version: '3.6'
services:
nginx:
image: nginx:1.15.8-alpine
ports:
- "80:80"
volumes:
- ./nginx-config:/etc/nginx/conf.d
- static-files:/static/teststaticfiles
networks:
- mynetwork
volumes:
static-files:
networks:
mynetwork:
从可以查看站点的意义上说,上述两个文件可以正常工作。问题是静态文件在 nginx 容器中不可用。因此,该网站显示时没有任何图像等。
一个可以正常工作的解决方法found here 是将 nginx 容器静态文件卷改为如下:
- /var/lib/docker/volumes/directory_static-files/_data:/static/teststaticfiles
上面的工作正常,但它看起来“hacky”和脆弱。是否有另一种方法可以在位于不同撰写文件中的容器之间共享卷,而无需映射 /var/lib/docker/volumes 目录。
【问题讨论】:
标签: docker docker-compose