2016-11-12 132 views
0

我有几个服务在它们自己的Docker容器中运行。在我的项目中,我还有一个lib文件夹,其中包含一些所有服务所需的小模块。将自定义模块安装到码头集装箱中

将这些模块包含到Docker容器中的最佳方式是什么?显然第三方模块,我只是使用RUN pip install -r requirements.txt,有没有类似的方式,我可以包括我自己的模块?

回答

0

我结束了使用docker-composelib文件夹安装倒入容器中,像这样管理出来:

version: '2' 
services: 
    frontend_web: 
    build: . 
    volumes: 
     - ../../lib:/app/lib 

我那么就不得不/应用/ lib目录添加到容器中的PYTHONPATH,我可以输入任何来自该文件夹的模块。

1

我会建议使用数据容器。你可以实现一个类似的方法,当在图像构建和多个容器之间缓存捆绑器宝石时,他们正在做的事情:

在你的docker-compose.yml(我假设你使用的是docker compose)文件中,你可以添加一个数据容器,您的其他容器:

version: '2' 
services: 
    web: 
    build: . 
    volumes: 
     - .:/app 
     - bundle:/bundle 

volumes: 
    bundle: {} 

默认情况下,容器在不存在时创建。

我对pip并不熟悉,但我认为它可以与bundler类似的方式工作:将pip安装路径设置为您的数据容器,并获得持久层,其中pip将放置所有模块。当另一个容器需要相同的模块时,只需安装数据容器即可。

也许你必须解决一些问题,但我认为主要想法可以适用于你的情况。