我正在为nodejs,nginx和一些静态网络数据使用单独的docker容器编写一个Web应用程序。
我想访问两个不同版本的网络数据。我的第一个想法是创建一个仅数据容器,然后将数据目录挂载到nginx容器中的两个不同位置
静态数据的Dockerfile类似于:
FROM ubuntu
RUN mkdir -p /data
ADD build/* /data/
我希望能够创作它,做类似的事情:
nginx-site:
image: my-nginx-image:version
ports:
- "80:80"
volumes_from:
- data-version-1
- data-version-2
links:
- node-app
node-app:
image: my-node-app-image:version
ports:
- "5000:5000"
data-version-1:
image: my-data-image:version1
volume:
- /data1:/data
data-version-2:
image: my-data-image:version2
volume:
- /data2:/data
但我认为我完全误解了音量增加。 / data1,/ data2卷来自主机,而不是将两个不同的目录从数据容器挂载到nginx容器中。
(即使它不是最好的模式,如果我不想拥有两个版本的数据,这一切都可以正常工作)
我还阅读了有关docker数据量的内容,但我想知道是否会遇到同样的问题。
答案 0 :(得分:1)
使用数据容器阅读问题不是最好的方法。我会将version 2 volumes用于docker-compose。您的所有服务都嵌套在services
密钥下,我们会在创建卷的位置添加新的顶级volumes
密钥。然后我们使用我们想要访问卷的服务下的卷密钥正常挂载卷。请参阅修订后的撰写文件:
version: "2"
services:
nginx-site:
image: my-nginx-image:version
ports:
- "80:80"
volumes:
- data1:/var/www/html/data1
- data2:/var/www/html/data2
links:
- node-app
node-app:
image: my-node-app-image:version
ports:
- "5000:5000"
volumes:
data1:
driver: local
data2:
driver: local
/var/www/html
下的nginx容器中有两个不同的可访问目录根据需要进行调整/var/lib/docker
内抽象出来。
version: "2"
services:
nginx-site:
image: my-nginx-image:version
ports:
- "80:80"
volumes:
- ./data1:/var/www/html/data1
- ./data2:/var/www/html/data2
links:
- node-app
node-app:
image: my-node-app-image:version
ports:
- "5000:5000"
data1
文件所在的目录中创建两个目录data2
和docker-compose.yml
,以便您可以根据需要添加内容,它们将显示在容器中。 请注意添加./以表示当前目录 我希望这有助于澄清事情
迪伦
您可以通过指定相同的卷但使用不同的装载路径将相同的卷数据装入两个不同的目录中。例如,data1:/var/www/html/data1
和data1:/var/www/html/data2
会在两个文件夹