我有几个服务在他们自己的Docker容器中运行。在我的项目中,我还有一个lib
文件夹,其中包含所有服务所需的一些小模块。
将这些模块包含在Docker容器中的最佳方法是什么?显然我只使用RUN pip install -r requirements.txt
的第三方模块,是否有类似的方式可以包含我自己的模块?
答案 0 :(得分:1)
我建议使用数据容器。在图像构建和多个容器之间缓存bundler gems时,你可以实现rails类似的方法:
在docker-compose.yml
(我假设您使用的是docker compose)文件中,您可以添加一个可以挂载到其他容器中的数据容器:
version: '2'
services:
web:
build: .
volumes:
- .:/app
- bundle:/bundle
volumes:
bundle: {}
默认情况下,容器在不存在时创建。
我不熟悉pip,但我认为它可以像bundler一样工作:你设置pip安装路径到你的数据容器并获得一个持久层,pip将放置它的所有模块。当另一个容器需要相同的模块时,只需挂载数据容器。
也许你必须解决一些问题,但我认为主要想法可以适用于你的情况。
答案 1 :(得分:0)
我最后通过使用lib
将docker-compose
文件夹挂载到容器中来管理它,如下所示:
version: '2'
services:
frontend_web:
build: .
volumes:
- ../../lib:/app/lib
然后我只需要将/ app / lib添加到容器的PYTHONPATH
中,然后我可以从该文件夹中导入任何模块。