如何解决跨多个 docker-compose 项目共享卷
我正在使用 docker-compose
为多个单独的项目编排容器。这些项目中的每一个都有自己的一组容器,并且与其他项目无关。
例如:
/my-projects/project-1/docker-compose.yml
/my-projects/project-2/docker-compose.yml
/my-projects/project-3/docker-compose.yml
然而,这些项目的相似之处在于它们都是 PHP 项目并且使用 webpack 作为前端资产,因此共享相同的包管理器:composer
和 yarn
。
我想知道,为了提高性能,是否可以在包管理器缓存的所有项目的目录根之外安装共享卷?
例如:
/my-projects/caches/composer
/my-projects/caches/npm
/my-projects/project-1/docker-compose.yml
/my-projects/project-2/docker-compose.yml
/my-projects/project-3/docker-compose.yml
/my-projects/caches/composer
和 /my-projects/caches/npm
安装在每个项目的相关容器内的位置。如果不清楚,一次只能启动一个项目。
目前,如果两个项目共享相同的 deps,那么每个项目都会单独下载并缓存它。一个更高效的(在构建时间方面)是挂载一个公共卷并将包管理器的缓存指向那里,这样当“项目 A”下载更新时,“项目 B”可以从缓存中加载它。>
解决方法
您可以简单地将与卷绑定相同的目录挂载到每个需要它的容器上。你can use absolute paths。甚至文档中的一个示例也是使用绝对路径作为绑定安装。
但是,卷在映像构建期间不可用(docker-compose build
,这是在任何情况下都应该运行 composer install
、npm install
或 yarn install
之类的命令。>
尽管如果您在容器运行时运行这些命令,没有什么可以阻止您将这些缓存目录安装到每个容器中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。