我有一个图像(不是容器),其中包含在/ store中烘焙的数据。图像没有做任何其他事情,它只是用于保存数据的容器。我想创建一个docker-compose文件,以便我的nginx容器可以访问/ usr / share / nginx / html中的/ store中的所有内容。 / p>
我是否需要先制作中间容器?我不确定docker-compose文件的外观。感谢
答案 0 :(得分:2)
这是一个快速的步骤:
docker run -v nginx-store:/store --rm store true
docker run -v nginx-store:/usr/share/nginx/html -d --name nginx nginx
第一次运行从nginx-store
图像的内容创建一个命名卷store
(每当您在容器中装入空卷时都会发生这种情况),并立即退出并删除容器。< / p>
第二次运行将该命名卷与未来的nginx容器一起使用。要在将来修改nginx-store
卷,您可以运行使用类似-v nginx-store:/target
标志来装载它的任何侧容器。
答案 1 :(得分:1)
管理的最佳方式可能是使用泊坞窗卷来存储您的/存储数据。 您可以通过从该映像创建容器,在其中安装空的docker卷,然后在外部docker卷中复制/ store的内容来执行此操作。
如果您仍然需要使用现有图像中的/ store,则需要从if实例化容器并从nginx容器中检索公开的卷。 (使用volume_from)。在这种情况下,两个容器都需要位于同一主机上。
答案 2 :(得分:0)
您可以尝试使用local-persist volume plugin,如下所示:
version: '2'
services:
web:
image: nginx
volumes:
- data:/usr/share/nginx/html
volumes:
data:
driver: local-persist
driver_opts:
mountpoint: /data/local-persist/data
显然,其他卷插件类型可能会提供更大的灵活性。
答案 3 :(得分:0)
我建议你考虑在你的nginx容器中烘烤/store
。它将减少安装的卷数,从而简化整体结构。并且可能会提高性能。
您可以通过多种方式实现这一目标:
使用数据图像作为nginx图像的基础。在这种情况下,您需要为nginx编写Dockerfile,但这并不是很困难。
您可以通过创建包含/store
端点和true
所需数据的容器,从数据图像中提取docker cp
。然后将其复制到您的nginx图像。