Ответ
Использовал Docker для контейнеризации приложений, создания легковесных и воспроизводимых сред разработки и деплоя.
Основные задачи и навыки:
- Создание образов: Написание
Dockerfileдля упаковки приложения и его зависимостей. - Управление контейнерами: Запуск, остановка, инспекция контейнеров через CLI.
- Работа с Docker Compose: Оркестрация многоконтейнерных приложений (например, приложение + БД).
- Работа с томами (Volumes) и сетями: Для сохранения данных и организации взаимодействия между контейнерами.
Пример Dockerfile для Spring Boot приложения:
# Многостадийная сборка для уменьшения итогового образа
FROM openjdk:17-jdk-slim AS build
WORKDIR /app
COPY . .
RUN ./mvnw clean package -DskipTests
FROM openjdk:17-jdk-slim
WORKDIR /app
# Копируем только готовый JAR-файл из стадии сборки
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
Ключевые команды:
docker build -t my-app:latest . # Сборка образа
docker run -d -p 8080:8080 my-app:latest # Запуск контейнера в фоне
docker ps # Просмотр запущенных контейнеров
docker-compose up -d # Запуск стека через Compose
Преимущества: Изоляция зависимостей, консистентность сред от разработки до продакшена, эффективное использование ресурсов.