我曾經在.dockerignore
中列出tests
目錄,以便它不會包含在我用來運行Web服務的映像中。如何在同一個項目中爲不同的構建指定不同的.dockerignore文件?
現在我正在嘗試使用Docker來運行我的單元測試,在這種情況下,我想要包含tests
目錄。
我查過docker build -h
,發現沒有相關的選項。
我該怎麼做?
我曾經在.dockerignore
中列出tests
目錄,以便它不會包含在我用來運行Web服務的映像中。如何在同一個項目中爲不同的構建指定不同的.dockerignore文件?
現在我正在嘗試使用Docker來運行我的單元測試,在這種情況下,我想要包含tests
目錄。
我查過docker build -h
,發現沒有相關的選項。
我該怎麼做?
目前沒有辦法做到這一點。有關於向Docker添加--ignore
標誌以提供忽略文件以供使用的冗長討論 - 請參閱here。
你此刻的選項大多是醜陋:
Dockerfile
和.dockerignore
,這可能會在你的情況下無法正常工作。另一種選擇是進一步構建包含測試的過程。我這樣做的方式是:
如果測試是單元測試然後我創建一個新的Docker圖像,從主項目圖像派生;我只是堅持頂部FROM
,然後ADD
測試,再加上任何所需的工具(在我的情況下,mocha
,chai
等)。這個新的「測試」圖像現在包含這兩個測試和要測試的原始來源。它可以直接運行,也可以在「監視模式」下運行,並將卷映射到主機上的源和測試目錄。
如果測試集成測試 ----例如初級圖像可能是GraphQL服務器 - 然後我創造的形象是自包含的,即不是從初級圖像導出(它仍然包含了測試和工具,當然)。我的測試使用環境變量來告訴他們在哪裏找到需要測試的端點,並且很容易讓Docker Compose調用這兩個一個容器使用主映像,另一個容器使用集成測試映像,並設置環境變量,以便測試套件知道要測試什麼。
將已清理的測試作爲卷裝入添加到容器可能是此處的一個選項。在生成映像之後,如果運行它進行測試,請將包含測試的源代碼安裝在清理後的代碼上。
services:
tests:
image: my-clean-image
volumes:
- '../app:/opt/app' # Add removed tests
使用不同的基礎目錄? – Henry