docker compose文件之间的共享卷
我想在两个docker compose文件之间共享一个卷。有两个相互连接的应用程序,我需要在它们之间创建一个符号链接。 我尝试使用命名卷和外部功能 在第一个容器上,我可以看到/var/www/s1文件夹的内容,但是/var/www/s2文件夹是空的,而在第二个容器上,我可以看到/var/www/s2文件夹的内容,但是/var/www/s1文件夹似乎是空的。由于在/var/www中看不到其他应用程序创建的文件夹的内容,因此无法进行符号链接 我制作了一些虚拟docker组合文件,试图以更简单的方式暴露问题 在/var/www/s1中应该有一个“magazine.txt”文件,而在/var/www/s2中应该有一个“paper.txt”文件 第一个docker compose文件如下所示:docker compose文件之间的共享卷,docker,docker-compose,volumes,Docker,Docker Compose,Volumes,我想在两个docker compose文件之间共享一个卷。有两个相互连接的应用程序,我需要在它们之间创建一个符号链接。 我尝试使用命名卷和外部功能 在第一个容器上,我可以看到/var/www/s1文件夹的内容,但是/var/www/s2文件夹是空的,而在第二个容器上,我可以看到/var/www/s2文件夹的内容,但是/var/www/s1文件夹似乎是空的。由于在/var/www中看不到其他应用程序创建的文件夹的内容,因此无法进行符号链接 我制作了一些虚拟docker组合文件,试图以更简单的方式暴
services:
nginx:
image: nginx
container_name: nginx
volumes:
- ../:/var/www/s1
- shared-s:/var/www
volumes:
shared-s:
name: shared-s
version: '3.8'
services:
php:
image: php
container_name: php
command: tail -F /var/www/s2/paper.txt
volumes:
- ../:/var/www/s2
- shared-s:/var/www
volumes:
shared-s:
external:
name: shared-s
第二个docker compose文件如下所示:
services:
nginx:
image: nginx
container_name: nginx
volumes:
- ../:/var/www/s1
- shared-s:/var/www
volumes:
shared-s:
name: shared-s
version: '3.8'
services:
php:
image: php
container_name: php
command: tail -F /var/www/s2/paper.txt
volumes:
- ../:/var/www/s2
- shared-s:/var/www
volumes:
shared-s:
external:
name: shared-s
在机械层面上,卷和绑定挂载不会按照您建议的方式“嵌套”。命名的卷
shared-s
将只包含空目录s1
和s2
,但不包含任何主机目录中的内容
发生的事情是这样的:
services:
nginx:
image: nginx
container_name: nginx
volumes:
- ../:/var/www/s1
- shared-s:/var/www
volumes:
shared-s:
name: shared-s
version: '3.8'
services:
php:
image: php
container_name: php
command: tail -F /var/www/s2/paper.txt
volumes:
- ../:/var/www/s2
- shared-s:/var/www
volumes:
shared-s:
external:
name: shared-s
卷排序:
装载在该容器上,从最短到最长shared-s
卷为空,因此/var/www
中的nginx
基本图像的内容被复制到卷中;然后将卷装入容器中的/var/www
/var/www/s1
(在卷中),然后绑定在那里装载主机目录(根本不修改卷)php
容器并对其卷进行排序:
shared-s
卷不是空的,Docker只是将其装载到容器中,隐藏图像中/var/www
中可能存在的任何内容/var/www/s2
(在卷中),然后绑定在那里装载主机目录(根本不修改卷)将应用程序代码复制到其中。如果您可以在后端应用程序中使用静态文件服务器,这将比尝试将文件从一个容器复制到另一个容器容易得多。如果无法避免,您可以使用通常用于多阶段构建的语法,将内容从一个构建图像复制到另一个构建图像