Skip to content

ci: контейнеризовать фронтенд через docker - #35

Merged
vladcheck merged 3 commits into
mainfrom
ci/30-containerize-frontend
Oct 13, 2026
Merged

vladcheck merged 3 commits into
mainfrom
ci/30-containerize-frontend

Conversation

@vladcheck

Copy link
Copy Markdown
Owner

Что сделано

  • Добавлен многостадийный Dockerfile для десктоп-клиента (JavaFX, Java 25):
    • stage build на maven:3-eclipse-temurin-25: кеширование зависимостей (сначала pom.xml через dependency:go-offline), затем mvn -B package -DskipTests и выгрузка рантайм-зависимостей в target/libs;
    • stage runtime на eclipse-temurin:25-jre-jammy с нативными библиотеками JavaFX (GTK, GL, X11, шрифты); точка входа запускает com.DesktopApplicationClientJava.Main с classpath app.jar плюс libs.
  • Добавлен .dockerignore (target, .git, IDE-файлы, .env, логи).
  • В compose.yaml добавлен сервис client за профилем gui (docker compose --profile gui run --rm client): существующие сервисы postgres/redis/minio и дефолтный запуск тест-инфры не затронуты. Отдельный compose-файл не создавал, чтобы держать один источник правды; профиль изолирует GUI-сервис от дефолтного up. depends_on не нужен: клиент ходит в бэкенд по HTTP, а не в postgres/redis напрямую.
  • В README добавлен раздел «Запуск фронта в Docker» (сборка, запуск, X11 для Linux и macOS XQuartz, переменные окружения, ограничения).

Как проверить

  • docker build -t frontend-check . — сборка успешна.
  • docker run --rm -e MOCK_DATA=true frontend-check — classpath и точка входа в порядке, JavaFX стартует и упирается только в отсутствие DISPLAY (Unable to open DISPLAY), что ожидаемо для headless-контейнера без X-сервера.
  • docker compose config и docker compose --profile gui config --services — валидны, дефолтный набор сервисов не изменился.
  • mvn -B spotless:check, mvn -B checkstyle:check, mvn -B test — все зелёные (70 тестов, BUILD SUCCESS); pre-commit хуки lefthook прошли при коммите.

Ограничения

JavaFX — оконный GUI: без проброса DISPLAY и X11-сокета окно не отобразится. Инструкции для Linux (xhost +local:docker, -v /tmp/.X11-unix) и macOS (XQuartz, DISPLAY=host.docker.internal:0) — в README и шапке Dockerfile.

Closes #30

@vladcheck vladcheck self-assigned this Oct 13, 2026
@vladcheck
vladcheck requested review from Deatheh and miyagi18 October 13, 2026 15:29
@vladcheck vladcheck added the CI Job or pipeline related label Oct 13, 2026
@vladcheck
vladcheck merged commit ce7f7bb into main Oct 13, 2026
8 checks passed
@vladcheck
vladcheck deleted the ci/30-containerize-frontend branch October 13, 2026 15:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI Job or pipeline related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Контейнеризовать фронт

1 participant