2017-06-22 118 views
1

我正在開發一個maven項目並在此項目中使用Junit運行測試。我是新來的碼頭工人,我正在嘗試編寫一個Dockerfile來生成一個圖像,該圖像創建一個容器,在運行時執行測試並輸出target/failsafe-reports中的XML結果(Maven插件的輸出文件夾,其中彙總了Junit測試)。我一直在嘗試使用鏈接,如Dockerfile ReferenceManage Data in Containers。我的導師使用docker run -it --rm --name containerName -v "$PWD":/usr/src/tests -v /Users/theUser/.m2:/root/.m2 -w /usr/src/tests maven:3.5-alpine mvn clean verify寫了一條可以實現這個目標的線。高級Docker和Dockerfile卷/寫入理解

上面的行在我的項目的根目錄中(在pom和Dockerfile所在的位置)調用,因此$PWD引用了我的項目的根目錄。

我的問題是在Dockerfile中可以自動完成多少工作?在嘗試使用和運行Dockerfile時,我無法在擁有當前Dockerfile時寫出任何內容。

FROM maven:3.5-alpine 

COPY ["./", "/usr/local/tests"] 

VOLUME /usr/local/tests/target/failsafe-reports 

ENTRYPOINT mvn -f /usr/local/tests/pom.xml verify 

docker build . -t imageName

構建它,並創建 docker run -it --rm --name test-container -v "$PWD":/usr/local/tests -v /Users/theUser/.m2:/root/.m2 imageName

容器這似乎運行我的測試,但不寫出來的結果在我的本地文件系統。我缺少什麼Docker和Dockerfiles的概念?

+0

編輯我的dockerfile是什麼,我已經將問題縮小到處理寫權限的問題,因爲我的本地目標文件夾已從我的運行命令更改,但目標文件夾中的所有內容都未更改(在測試期間運行,目標中的文件夾被製作並銷燬) – littlespice3

回答

0

儘量只運行:

docker run -d --name test-container -v $PWD:/usr/local/tests -v /Users/theUser/.m2:/root/.m2 imageName 

在主機的本地當前文件夾(PWD)然後檢查時輸出已創建。

如果沒有,那麼通過調出使用shell進入容器:

docker exec -it test-container sh 

現在你應該在提示符下,嘗試運行ls -l或周圍看find其中&輸出是否創建在容器內。如果沒有生成輸出文件,這應該爲您提供有關如何進行卷裝入或修復進程本身的線索。

+0

主機沒有寫出數據,但容器中的數據已更改,現在試圖處理如何訪問卷中的數據 – littlespice3

+0

是的,您也可以運行'docker diff test-container' from host並且應該顯示所有被更改的文件。然後,您只需使用'-v'將該文件夾掛接到主機上的空文件夾,就可以獲得輸出數據。 – Anoop