पाठ 37 / 38

Spring Boot ऐप को कंटेनराइज़ करना

मल्टी-स्टेज बिल्ड से Java सेवा को Docker इमेज में पैक करें, और समझें JAR को layer करना तेज़, कैश-अनुकूल rebuild के लिए क्यों मायने रखता है।

कंटेनराइज़ क्यों करें

कंटेनर इमेज ऐप, JRE, और OS लाइब्रेरी को एक अपरिवर्तनीय, पोर्टेबल इकाई में बंडल करती है — "मेरे कंप्यूटर पर चलता है" अब "इसी इमेज में चलता है" बन जाता है, जहाँ भी वह इमेज चले। यह Kubernetes व अधिकांश क्लाउड प्लेटफ़ॉर्म की मानक डिप्लॉयमेंट इकाई है।

न्यूनतम Dockerfile

मल्टी-स्टेज बिल्ड पहले चरण में पूर्ण JDK इमेज से कंपाइल करता है, फिर बना हुआ JAR ही एक हल्की JRE-केवल रनटाइम इमेज में कॉपी करता है — भेजी गई इमेज में Maven, सोर्स कोड या बिल्ड टूल नहीं होते।

FROM eclipse-temurin:21-jdk AS build
WORKDIR /app
COPY . .
RUN ./mvnw -q package -DskipTests

FROM eclipse-temurin:21-jre
WORKDIR /app
COPY --from=build /app/target/orders-service.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]