2016-12-01 67 views

回答

6

目前没有办法做到这一点。有关于向Docker添加--ignore标志以提供忽略文件以供使用的冗长讨论 - 请参阅here

你此刻的选项大多是丑陋:

  • 拆分项目进入子目录中每个人都有自己Dockerfile.dockerignore,这可能会在你的情况下无法正常工作。
  • 创建一个脚本,将相关文件复制到临时目录并在那里运行Docker构建。
0

另一种选择是进一步构建包含测试的过程。我这样做的方式是:

如果测试是单元测试然后我创建一个新的Docker图像,从主项目图像派生;我只是坚持顶部FROM,然后ADD测试,再加上任何所需的工具(在我的情况下,mocha,chai等)。这个新的“测试”图像现在包含这两个测试和要测试的原始来源。它可以直接运行,也可以在“监视模式”下运行,并将卷映射到主机上的源和测试目录。

如果测试集成测试 ----例如初级图像可能是GraphQL服务器 - 然后我创造的形象是自包含的,即不是从初级图像导出(它仍然包含了测试和工具,当然)。我的测试使用环境变量来告诉他们在哪里找到需要测试的端点,并且很容易让Docker Compose调用这两个一个容器使用主映像,另一个容器使用集成测试映像,并设置环境变量,以便测试套件知道要测试什么。

0

将已清理的测试作为卷装入添加到容器可能是此处的一个选项。在生成映像之后,如果运行它进行测试,请将包含测试的源代码安装在清理后的代码上。

services: 
    tests: 
     image: my-clean-image 
     volumes: 
     - '../app:/opt/app' # Add removed tests 
相关问题