如何从图像创build数据量用于nginx容器

我有一个图像(不是容器),其中的数据在/ store存放。 该图像没有做任何其他的事情,它只是一个容纳数据的容器。我想创build一个docker-compose文件,这样我的nginx容器就可以访问/ store中的所有/ usr / share / nginx / html

我需要先制作一个中间容器吗? 我不确定docker-compose文件的外观。 谢谢

pipe理这个最好的方法可能会使用docker卷来存储你的/ store数据。 您可以通过从该映像创build容器来完成一次,在其中装入一个空的泊坞窗卷,然后复制外部泊坞窗卷中的/ store的内容。

如果仍然需要使用现有映像中的/ store,则需要从if创build一个容器,并从nginx容器中检索暴露的卷。 (使用volume_from)。 在这种情况下,两个容器都需要在同一个主机上。

这是一个快速的过程:

docker run -v nginx-store:/store --rm store true docker run -v nginx-store:/usr/share/nginx/html -d --name nginx nginx 

第一次运行会根据您的store映像的内容创build一个命名卷nginx-store (每当您在容器中装入一个空卷时都会发生这种情况),并立即退出并删除该容器。

第二次运行在将来的nginx容器中使用该命名卷。 要在将来修改nginx-store卷,可以运行任何装载它的类似-v nginx-store:/target标志的容器。

你可以尝试使用local-persist卷插件如下:

 version: '2' services: web: image: nginx volumes: - data:/usr/share/nginx/html volumes: data: driver: local-persist driver_opts: mountpoint: /data/local-persist/data 

显然其他的插件types可能会提供更多的灵活性。

https://docs.docker.com/engine/extend/plugins/

我build议你考虑在你的nginx容器中烘烤/store 。 这将减less安装量,从而简化整体结构。 也许提高性能。

你可以用几种方法做到这一点:

  1. 使用你的数据图像作为你的nginx图像的基础。 在这种情况下,您将需要为nginx编写Dockerfile,但这不是很困难。

  2. 您可以通过创build具有true端点和docker cp所需数据的容器来从数据映像中提取/store数据。 然后将其复制到您的nginx图像。