将自定义模块安装到码头集装箱中
问题描述:
我有几个服务在它们自己的Docker容器中运行。在我的项目中,我还有一个lib
文件夹,其中包含一些所有服务所需的小模块。将自定义模块安装到码头集装箱中
将这些模块包含到Docker容器中的最佳方式是什么?显然第三方模块,我只是使用RUN pip install -r requirements.txt
,有没有类似的方式,我可以包括我自己的模块?
答
我结束了使用docker-compose
的lib
文件夹安装倒入容器中,像这样管理出来:
version: '2'
services:
frontend_web:
build: .
volumes:
- ../../lib:/app/lib
我那么就不得不/应用/ lib目录添加到容器中的PYTHONPATH
,我可以输入任何来自该文件夹的模块。
答
我会建议使用数据容器。你可以实现一个类似的方法,当在图像构建和多个容器之间缓存捆绑器宝石时,他们正在做的事情:
在你的docker-compose.yml
(我假设你使用的是docker compose)文件中,你可以添加一个数据容器,您的其他容器:
version: '2'
services:
web:
build: .
volumes:
- .:/app
- bundle:/bundle
volumes:
bundle: {}
默认情况下,容器在不存在时创建。
我对pip并不熟悉,但我认为它可以与bundler类似的方式工作:将pip安装路径设置为您的数据容器,并获得持久层,其中pip将放置所有模块。当另一个容器需要相同的模块时,只需安装数据容器即可。
也许你必须解决一些问题,但我认为主要想法可以适用于你的情况。