使用Docker复制源文件时的最佳实践

时间:2019-07-31 08:15:47

标签: python docker

最后,我一直在尝试提高Docker的技能,但是当我不得不处理它时,仍然有一些困难。假设我有一个分为模块的应用程序,每个模块都是自己的Docker服务。

所有模块都使用存储在config / config.ini下的配置,但是此配置需要一些预处理,因此它们使用的是config / config.py的功能。

我将其实现为:

  • 每个模块的每个Dockerfile将config /文件夹的内容复制到它们自己的(COPY ./config .
  • 每个模块使用以下命令导入配置函数:from config import ###

此方法确实有效,但由于config文件夹不在pythonpath上,所以它破坏了IDE,因此我失去了一些重要的功能,更糟糕的是,我认为这不是实现我想要的最干净的方法。 / p>

此外,源文件也会发生这种情况。通常在我的python开发中,我将创建一个名为“ APP”的包(请参见下面的文件夹结构),然后可以将任何源文件导入该包的任何文件夹中,但是因为每个子文件夹都是一个不同的Docker服务,无法将此项目设为python包。例如,还对测试进行了泊坞化,因此每个测试还从其他文件夹中复制了所需的源文件:

文件unit_test_main_module.py需要测试main_module中的所有源文件,以便使用Dockerfile复制文件。

APP
 ├── unit_tests
     ├── Dockerfile
     └── unit_test_main_module.py
 ├── integration_tests
     ├── Dockerfile
     └── first_integration_test.py
 ├── config
     ├── config.ini
     └── config.py
 └── main_module
     ├── source_file_one.py
     └── source_file_two.py

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我建议每个进程使用一个Dockerfile。 Docker映像基本上是一种运行过程的独立方式。因此,如果只运行一个进程,则只需要一个Dockerfile。

您可能想要第二个Dockerfile作为测试映像。但是您不需要每个包装一个。

假设两个,一个用于主应用程序,一个用于测试,它将位于顶层目录中。