[英]How to run Springboot application with Junit test with Docker File
現在我的 Dockerfile 如下:
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
如果我想在啟動 springboot 應用程序后運行一些 junit 測試怎么辦? 我正在使用 Maven 作為依賴項。
我應該把這些線放在哪里?
mvn test
mvn clean test
mvn clean compile test
或者我應該使用哪些其他命令?
前提:即使解決方案針對您的具體情況,最好在目標 jar 構建階段執行測試
要對 Dockerfile 執行測試,您可以執行以下操作之一:
復制 Dockerfile 上的源文件並執行 maven 測試命令。 這樣做你也可以直接在容器上構建你的目標 jar 並且你需要在容器上安裝maven 。
只復制目標 jar 文件並使用它來執行您需要在目標 jar 上包含測試類的測試。 (請參閱如何將測試類包含到 Maven jar 中並執行它們? )。
無論您選擇哪種方式,您都可以修改入口點以執行多個命令。 您基本上可以通過兩種方式做到這一點:
例子
假設您選擇復制所有源文件(選項1 )並使用 bash 腳本(選項1(a) )來執行此操作。 如下創建command.sh文件,以便將容器附加到 Spring 應用程序進程,即使將執行 mvn test:
#!/bin/bash
#Execute Spring application
CMD="java -jar target/app.jar"
$CMD &
SERVICE_PID=$!
#Execute Tests
mvn test
#Wait for Spring execution
wait "$SERVICE_PID"
您的 Dockerfile 將如下所示:
#Start from maven docker image
FROM maven:3.6.1-jdk-8-alpine
#Copy all sources
COPY . .
#Build ( because you want to execute tests after the spring boot application is started you should disable test during build phase )
RUN mvn install
#Start container
COPY commands.sh /scripts/commands.sh
RUN ["chmod", "+x", "/scripts/commands.sh"]
ENTRYPOINT ["/scripts/commands.sh"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.