52 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Docker
		
	
	
	
| # First part
 | |
| #============
 | |
| 
 | |
| # Start with an image containing JDK 17
 | |
| FROM openjdk:17-jdk-slim AS build
 | |
| 
 | |
| # Install Maven
 | |
| RUN apt-get update && apt-get install -y --no-install-recommends maven git \
 | |
|     && apt-get clean \
 | |
|     && rm -rf /var/lib/apt/lists/*
 | |
| 
 | |
| # Setup working directory 
 | |
| WORKDIR /App
 | |
| 
 | |
| # Copy the pom.xml file to the image
 | |
| COPY ./pom.xml /App/
 | |
| 
 | |
| # Cache maven dependencies
 | |
| RUN mvn dependency:resolve
 | |
| 
 | |
| # Copy the entire src directory to the image
 | |
| COPY ./src /App/src
 | |
| 
 | |
| # Build the app
 | |
| RUN mvn clean package -Dmaven.test.skip=true
 | |
| 
 | |
| # Current dir is /App
 | |
| # ==> You will find the result in folder target/ 
 | |
| 
 | |
| # Second part
 | |
| #============
 | |
| 
 | |
| # start with a small image
 | |
| FROM alpine:latest
 | |
| 
 | |
| # add JRE 17
 | |
| RUN apk add --no-cache openjdk17-jre
 | |
| 
 | |
| # Set working directory 
 | |
| WORKDIR /App
 | |
| 
 | |
| # copy jar form first image to second image
 | |
| COPY --from=build /App/target/*.jar /App/
 | |
| 
 | |
| # db has to start for backend
 | |
| COPY wait-for-db.sh /usr/local/bin/wait-for-db.sh
 | |
| RUN chmod +x /usr/local/bin/wait-for-db.sh
 | |
| 
 | |
| # Expose Port
 | |
| EXPOSE 8080
 | |
| 
 | |
| ENTRYPOINT ["sh", "-c", "java -jar *.jar"] |