|
1 | | -# Stage 1: Build the application using Eclipse Temurin JDK 22 |
2 | 1 | FROM eclipse-temurin:22-jdk AS build |
3 | 2 |
|
4 | | -# Set working directory inside the build container |
5 | 3 | WORKDIR /app |
6 | 4 |
|
7 | | -# Copy Gradle wrapper scripts and related files for build setup |
8 | | -COPY gradlew /app/gradlew |
9 | | -COPY gradlew.bat /app/gradlew.bat |
10 | | -COPY gradle/wrapper/gradle-wrapper.jar /app/gradle/wrapper/gradle-wrapper.jar |
11 | | -COPY gradle/wrapper/gradle-wrapper.properties /app/gradle/wrapper/gradle-wrapper.properties |
| 5 | +COPY gradlew gradlew.bat settings.gradle build.gradle /app/ |
| 6 | +COPY gradle /app/gradle |
12 | 7 |
|
13 | | -# Copy Gradle build files (build.gradle, settings.gradle) |
14 | | -COPY build.gradle settings.gradle /app/ |
15 | | - |
16 | | -# Copy application source code to container |
17 | 8 | COPY src /app/src |
18 | 9 |
|
19 | | -# Ensure Gradle wrapper has execute permission |
20 | 10 | RUN chmod +x gradlew |
21 | | - |
22 | | -# Execute Gradle build to clean and create a shadow (fat) JAR |
23 | 11 | RUN ./gradlew clean shadowJar |
24 | 12 |
|
25 | | -# Stage 2: Prepare runtime image |
26 | 13 | FROM eclipse-temurin:22-jdk |
27 | 14 |
|
28 | | -# Set working directory inside the runtime container |
29 | 15 | WORKDIR /app |
30 | 16 |
|
31 | | -# Copy the built shadow JAR from the build stage |
32 | 17 | COPY --from=build /app/build/libs/VideoServer-1.0-SNAPSHOT.jar /app/VideoServer.jar |
33 | 18 |
|
34 | | -# Copy static asset required by the application |
35 | | -COPY device_offline.jpg /app/device_offline.jpg |
36 | | - |
37 | | -# Define container start command to run the JAR |
38 | 19 | ENTRYPOINT ["java", "-jar", "/app/VideoServer.jar"] |
39 | 20 |
|
40 | | -# Expose ports used by the application services |
41 | | -# 1234: WebSocket Server |
42 | | -# 4444: MJPEG Streaming Server |
43 | | -# 4321: Camera Server |
44 | 21 | EXPOSE 1234 |
45 | 22 | EXPOSE 4444 |
46 | 23 | EXPOSE 4321 |
47 | | - |
48 | | -# Docker usage instructions: |
49 | | -# Build image: sudo docker build -t videoserver:latest . |
50 | | -# Run container detached with port mappings: |
51 | | -# sudo docker run -d -p 1234:1234 -p 4444:4444 -p 4321:4321 videoserver |
0 commit comments