Skip to content

[TASK]: Huge refactor #139

Description

@stamepicmorg

👉👈 Contact Details (optional)

No response

📌 Tell us more about your task

epicmorg/docker — рефакторинг архитектуры (бэкпорт из приватного проекта)

Цель: схлопнуть матрицу app × os, вернуть глобальные теги рантаймов, заморозить легаси, навести порядок в тегах и метадате.
Делается постепенно. Фазы упорядочены по зависимостям — идти сверху вниз.


Фаза 0 — Заморозка легаси (Debian 6–12). Низкий риск, можно начать сразу

  • Перенести Dockerfile'ы старых Debian 6–12 в deprecated/
  • Оставить их ванильными — выпилить любые довески рантаймов (java/node/python из подтегов)
  • Привести каждый старый Debian к ровно 3 тегам: light / <codename> (=main, без постфикса) / develop
  • Выключить CI по крону для старых Debian — только руками по требованию
  • Привести текущий 13й деб к эталонному состоянию
    • light
    • main
    • develop
  • Привести текущий sid деб к нормальному состоянию
    • light
    • main
    • develop
  • Портировать перед полной заморозкой обновления в прошлые релизы
  • Собрать каждый старый Debian один раз в текущем состоянии, запушить финал
  • Вычистить лишние подтеги старых Debian на Docker Hub + quay.io (+ GHCR, если уже есть)
  • Проверить, что перенос в deprecated/ реально убрал их из активной матрицы сборки
    • если матрица — скан дерева → перенос папки сделал всё сам
    • если хардкод-список — обновить список руками

Фаза 1 — Консолидация мейнлайна (trixie)

  • Зафиксировать trixie как единственный мейнлайн-базис; тройка light/main/develop ведётся на нём
  • Переименовать slimlight (доработанный slim) в Dockerfile'ах, тегах, доках
    • light ≠ vanilla slim — это осознанно, свой слой поверх
  • Синхронизировать терминологию с приватным проектом (там тоже light)
  • Доработать develop — бекпортнуть правки из приватного проекта (build-тулчейн, предкомпиленные либы)

Фаза 2 — Глобальные теги рантаймов

  • Починить gcc — бекпортнуть правки из приватного проекта (тулчейны gcc 4–16; фундамент для сборки рантаймов из исходников, делать до python-from-source)
  • Бэкпортнуть из приватного проекта мультистейдж-сборку Python из исходников (<ver>-develop депсы вроде openssl уже есть)
  • Вынести python/node/jdk из подтегов debian в глобальный пул epicmorg/<rt>:<version>
    • jdk
    • node
  • Перецепить все рантаймы на FROM trixie (или trixie-light)
  • запекать sonames/депсы в бинари → /usr/local/share/epicmorg/<dep>, не отравляя ld.so.conf и системные утилиты
  • Перецепить аппы на новые глобальные теги рантаймов
  • добавить php в глобальный пул
    • php: убираем apache_mod в пользу настроенного php-fpm
    • имплементируем все модули, базовые, которые нужны и без мусора
    • болт, ионкуб, перфорс блобами. cassandra уезжает в testrail
    • имплементируем phpenmod\dismod + php-ext-install
    • подготавливаем все следующие версии:
      • 8.0
      • 8.1
      • 8.2
      • 8.3
      • 8.4
      • 8.5
      • 7.4
      • 7.3
      • 7.2
      • 7.1
      • 7.0
      • 5.6
      • 5.5
      • 5.4
      • 5.3

Фаза 3 — Контракт тегов и пиннинг

  • Решить и задокументировать модель ссылок даунстрима на рантаймы
    • плавающий :version = неконтролируемый каскад при волновой миграции; на время окон — пин по digest/дата-тегу
  • Подтвердить: никаких latest на base-репах
  • README: текущая модель поведения базовых образов + рекомендация пиниться на @sha256:... ради воспроизводимости + анонс миграций за ~1 месяц
  • Явно: ответственность за пиннинг даунстрима не берём

Фаза 4 — OCI-лейблы

Статика (в Dockerfile)

  • org.opencontainers.image.title
  • org.opencontainers.image.description
  • org.opencontainers.image.licenses="MIT"
  • org.opencontainers.image.documentationтолько если появится отдельный docs/wiki URL (иначе дубль source)

Фаза 5 — GHCR / x-mirror

Этот блок интеграции живёт в kaniko-wrapper / buildah-wrapper. Здесь как чеклист, переносить в отдельную issue по желанию.

  • Смоук-тест GHCR на мелком образе (webtlo): logintagpush
  • Переключить видимость пакета на Public (по умолчанию приватный)

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions