Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.

@bookjava
📦 От Кода к Продакшену: JAR и Docker В старые времена (Java EE) процесс деплоя был адом: нужно было установить на сервер Tomcat, настроить его, скомпилировать .war файл, закинуть его в папку... 🤯 Spring Boot принес концепцию Fat JAR (Жирный JAR). 🍔 1. Fat JAR - "Всё своё ношу с собой" Spring Boot упаковывает ваше приложение, все библиотеки (зависимости) и даже сам веб-сервер (Tomcat) в один единственный файл .jar. Этот файл работает как .exe в Windows. Ему ничего не нужно, кроме установленной Java. Как собрать? В терминале (в папке проекта): # Для Maven ./mvnw clean package # Для Gradle ./gradlew build В папке target (или build/libs) появится файл myapp-0.0.1-SNAPSHOT.jar. Как запустить? Где угодно (на сервере, на ноутбуке друга), где есть Java: java -jar myapp.0.0.1-SNAPSHOT.jar Всё! Сервер стартует. 🐳 2. Docker - "Работает везде" JAR это хорошо. Но что, если на сервере стоит Java 11, а у вас Java 17? Или другая ОС? Начинается проблема "На моем компьютере работало!". Docker решает это, упаковывая ваше приложение вместе с Java и операционной системой в Контейнер. Пишем Dockerfile Создайте файл без расширения с именем Dockerfile в корне проекта. Вариант для новичков (Простой): # 1. Берем базовый образ с Java 17 (легковесный Alpine Linux) FROM eclipse-temurin:17-jre-alpine # 2. Копируем наш JAR внутрь образа # (Предварительно нужно сделать mvn package руками!) COPY target/*.jar app.jar # 3. Говорим, какую команду запустить при старте контейнера ENTRYPOINT ["java", "-jar", "/app.jar"] Как запустить: # 1. Собираем образ (Image) docker build -t my-spring-app . # 2. Запускаем контейнер # -p 8080:8080 пробрасывает порт наружу docker run -p 8080:8080 my-spring-app 🏗 3. Multi-stage Build (Уровень Pro) В варианте выше вам нужно сначала собрать JAR руками. Это неудобно для CI/CD. В профессиональном Dockerfile мы делаем сборку внутри Docker. # --- Этап 1: Сборка (Build) --- FROM maven:3.8.5-openjdk-17 AS builder WORKDIR /app COPY . . # Собираем JAR, пропуская тесты (для скорости) RUN mvn clean package -DskipTests # --- Этап 2: Запуск (Run) --- # Берем чистый, маленький образ для запуска FROM eclipse-temurin:17-jre-alpine WORKDIR /app # Копируем ТОЛЬКО готовый jar из первого этапа COPY --from=builder /app/target/*.jar app.jar ENTRYPOINT ["java", "-jar", "app.jar"] Почему это круто? В финальном образе нет исходного кода и тяжелого Maven. Только Java и ваш JAR. Образ весит минимум, а собрать его можно одной командой docker build, даже если на компьютере вообще не установлена Java! 🔥 Итог 1. Maven/Gradle собирают код в один Fat JAR. 2. Dockerfile описывает среду для запуска. 3. Multi-stage build позволяет собирать и запускать приложение в изолированной среде, не засоряя систему. #SpringBoot #Docker #DevOps #Deployment #Java 👉 @BookJava
Если у вас установлено приложение,
вы можете сразу перейти в канал