假设您有一个包含Rails应用程序的图像,其中包含资产。而且您想从另一个运行Nginx的容器中为它们提供服务。
从我收集的数据来看,挂载卷会使目录的内容消失。因此,如果您将一个卷装入两个容器,例如,
volumes:
assets:
services:
app:
volumes:
assets:/app/public/assets
nginx:
volumes:
assets:/assets
他们两个都将看到一个空文件夹。您可以手工将其填满。但是,如果要部署更新版本的Rails应用程序映像,则这两个将看不到更改。
我想念什么吗?有没有一种方法可以处理文件,而无需将它们代理到Rails应用或将它们从一个容器复制到另一个容器?</ p>
UPD 第一个具有非空目录的容器将装入卷,该容器将确定其初始内容。
答案 0 :(得分:1)
您可以在将Rails启动到Rails图像的Dockerfile
(CMD
或ENTRYPOINT
)之前添加以下行:
rm -r /assets/*
cp -r /app/public/assets/* /assets
然后将这两种服务的卷装入/assets
。
这样,每次您的容器重新启动时(更改后在docker stack deploy
上,该卷将被nginx容器可见的新资产重新填充。