我试图允许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 compose文件在一个单独的文件中,也在一个完全不同的文件夹中。换句话说,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
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容器静态文件卷改为如下所示:
- /var/lib/docker/volumes/directory_static-files/_data:/static/teststaticfiles
上面的方法是正确的,但是它看起来是“刺耳的”和脆弱的。是否有另一种方法可以在存储在不同组合文件中的容器之间共享卷,而不需要映射/var/lib/docker/volumes
目录。
通过将2个docker-compose.yml
文件分开,实际上创建了2个不同的卷;这就是您在nginx
服务卷中看不到web
服务数据的原因,因为只有两个不同的卷。
例句:假设你有以下结构:
example/
|- web/
|- docker-compose.yml # your first docker compose file
|- nginx/
|- docker-compose.yml # your second docker compose file
从web
文件夹运行docker-compose up
(或从example
目录运行docker-compose-f web/docker-compose.yml up
)实际上将创建一个名为web_static-files
的卷(docker-compose.yml
文件中定义的卷的名称,前缀为该文件所在的文件夹)。
因此,从nginx
文件夹运行docker-compose up
实际上将创建nginx_static-files
而不是根据需要重新使用web_static-files
。
您可以使用web/docker-compose.yml
创建的卷,方法是在第二个docker编写文件(nginx/docker-compose.yml
)中指定这是一个外部卷,其名称为:
volumes:
static-files:
external:
name: web_static-files
注意,如果不希望卷(和所有资源)以文件夹名(默认)为前缀,而是以其他内容为前缀,则可以将-p
选项添加到docker-compose
命令:
docker-compose \
-f web/docker-compose.yml \
-p abcd \
up
该命令现在将创建一个名为abcd_static-files
的卷(您可以在第二个docker编写文件中使用)。
您还可以在自己的docker-compose
文件(如volumes/docker-compose.yml
)上定义卷创建:
version: '3.6'
volumes:
static-files:
并在web和nginxdocker-compose.yml
文件中引用此卷作为外部卷,名称为volumes_static-files
:
volumes:
volumes_static-files:
external: true
问题内容: 嗨,我正在使用Docker部署一些服务,在这里我想在不同的Docker容器之间共享Docker卷。 假设我有一个Docker容器A在/ data挂载了一个卷。这是A的Dockerfile 据我了解,这会将一个卷附加到容器,但不会将主机目录装载到该容器。因此,该卷内的数据仍位于容器A内。 我有另一个提供ftp服务的容器B。它访问卷/ public下的数据。B的Dockerfile是 现在
我正在使用Docker部署一些服务,我想在不同的容器之间共享Docker卷。 假设我有一个Docker容器a,它在/data处挂载了一个卷。下面是它的DockerFile: 根据我的理解,这会将卷附加到容器,但不会将主机目录挂载到容器。所以这个卷里面的数据仍然在容器A里面。
问题内容: 我正在开发使用Meteor和React作为视图引擎的应用程序 考虑下图: 从另一个示例反应隐藏组件 当触发C4按钮单击事件时,我需要更改C2组件状态。由于他们没有直接关系,因此我无法直接从C4进入C2状态。 另一个示例是从Component提交表单并获取在另一个Component中声明的数据(输入字段的值)。 我知道可以通过一些技巧来解决此问题(例如,流星会话,通过每个组件传递数据,基
问题内容: 我需要在两个(或更多个)组合框之间共享数据,但是我想独立选择元素。例如,如果我在第一个comboBox中选择Object1,则我的第二个ComboBox也选择Object1,因为它们具有相同的模型(DefaultComboBoxModel,并且此模型还管理所选的对象)。但是我不想要这种行为。我想在我的comboBoxes中独立选择对象。当我在第一个comboBox中选择对象时,我的第二
null 在列出的3个选项中,只有最后一个可以使用projectile(可能还有其他Emacs包)。但我需要能够访问/修改文件从Windows以及,所以这不是一个可行的选择。 有没有人为此找到好的解决方案?
Windows版本和内部版本2004(操作系统内部版本19037.1) windows上安装的docker 运行诸如,,,等命令都可以正常工作。现在我想推一个图像,所以当然我必须先登录。 我在WSL终端中运行