Skip to content

Сделать тренажёр по Docker #22

Description

@linskay

Важные моменты:

  • в один коммит не поместится задача, поэтому от этой иши делаем подзадачи с конкретной реализацией какого-либо функционала из задачи
  • PR в dev
  • плагин ламбук не забываем
  • космический-неоновый стиль, переиспользуем текущие компоненты фронта, делаем пока что монолитом

По реализации:

Общее описание-
Структура тренажёра

  1. Бэкенд (Java + Spring Boot)
    Docker-образы:
    backend-service
    database (делаем миграции ликибейз).
    Что проверять:
    Умение работать с Dockerfile для Java-приложений.
    Настройку сетей (network), volumes для БД.
    Запуск связки backend + database через docker-compose.
  2. Фронтенд (React)
    Docker-образ(можно не запихивать в образ и обойтись командой):
    frontend-service
    Что проверять:
    Сборку статики через Dockerfile.
    Проксирование API (настройка Nginx) при необходимости
    Интеграцию с бэкендом (CORS, переменные окружения)- настроено в текущей реализации, важно, чтоб не слетело
  3. Общая инфраструктура
    docker-compose.yml — для запуска всего стека - сделаю я @linskay
    .env — переменные окружения (порт бэкенда, URL API и т. д.). @linskay (@nbv92 шаблон уже в проекте, нужно, чтоб чувствительные данные не попали в коммит)

Это нужно сделать будет:

тренажер, примерная структура, пока что на 3 уровня тренажера, с меню не женить(реализую менюшку, потом подвяжем)
🎯 Примеры заданий
🔹 Уровень 1: Базовый Docker
Запусти контейнер с PostgreSQL:

Требование: контейнер должен быть назван training-db и использовать volume для данных.

Проверка: docker ps показывает запущенный контейнер + docker volume ls.

Собери образ для Spring Boot приложения:

Дан: Dockerfile с ошибкой (например, отсутствует EXPOSE 8080).

Задача: исправить и собрать образ (docker build -t backend-app .).

🔹 Уровень 2: Docker Compose
Напиши docker-compose.yml для бэкенда и БД:

Условия:

Бэкенд зависит от PostgreSQL.

Нужно прописать environment (логин/пароль БД).

Проверка: docker-compose up -d и запрос к API (curl localhost:8080/api).

Добавь React-фронтенд в docker-compose:

Условия:

Фронтенд должен проксировать API бэкенда.

Порт 3000 → 80 (Nginx).

Проверка: Открыть localhost:80 и увидеть работающее React-приложение.

🔹 Уровень 3: Продвинутые сценарии
Оптимизируй Dockerfile для React:

Исходный файл использует node:16 для production-сборки.

Задача: переделать на мультистадийный build (builder + Nginx).

Настрой логирование в Docker:

Задача:

Сделать так, чтобы логи бэкенда писались в файл backend.log на хосте.

Проверка: docker-compose logs + наличие файла на хосте.

🛠 Техническая реализация
Проверка заданий:

Скрипты на Bash(? погуглить, возможно можно и делать на питоне, но тогда надо не по запросу реализовывать проверку, а по результату, что выводит прилдожение), которые анализируют docker ps, docker inspect, docker-compose config.

Для веб-версии — API (Java/Node.js), который запускает тесты в песочнице (Kubernetes/Docker-in-Docker).

Подсказки:

Если пользователь ввёл неправильную команду — давать пример (Hint: try docker run -d -p 5432:5432 postgres).

как улучшение-

Бонус: Готовый шаблон репозитория на GitHub с backend + frontend + docker-compose для старта например, полет творчеству, можно реализовать еще дополнительные уровни, интерактивный учебник по доккер и тд, все на твое усмотрение, что ты считаешь нужным, могу несколько ресурсов по доккер кинуть

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions