# Документ поддержки концепции образов Docker для проекта `timestamp: 2024/08/12` | Debian | **codename** | **status** | |:-------------|:-------------|:-------------| | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.sid.yml?label=SID&logo=Debian%20sid%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.sid.yml) | `sid` | `unstable` | | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.13.yml?label=13&logo=Debian%2013%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.13.yml) | `trixie` | `testing` | | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.12.yml?label=12&logo=Debian%2012%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.12.yml) | **`bookworm`** | **`Stable`** | | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.11.yml?label=11&logo=Debian%2011%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.11.yml) | **`bullseye`** | **`LTS`** \ `oldstable`| | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.10.yml?label=10&logo=Debian%20Legacy%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.10.yml) | `buster` | `deprecated`, `oldoldstable `| | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.9.yml?label=9&logo=Debian%20Legacy%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.9.yml) | `stretch` | `deprecated` | | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.8.yml?label=8&logo=Debian%20Legacy%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.8.yml) | `jessie` | `deprecated` | | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.7.yml?label=7&logo=Debian%20Legacy%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.7.yml) | `wheezy` | `deprecated` | | [![GHA](https://img.shields.io/github/actions/workflow/status/EpicMorg/docker/epicmorg.base.images.debian.6.yml?label=6&logo=Debian%20Legacy%20Images&style=flat-square)](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.6.yml) | `squeeze` | `deprecated` | ## Введение Репозиторий `epicmorg/docker` содержит коллекцию `образов Docker`, организованных по версиям `Debian` и используемых для создания как базовых, так и конечных образов продуктов. Основная цель данной концепции — `обеспечить упорядоченность и актуальность образов в зависимости от их использования и статуса`. В этом документе описан текущий подход к организации образов и планируемые изменения для улучшения управления версиями и поддержки. ### Организация образов ##### Базовые образы В директории `linux/ecosystem/epicmorg/debian` расположены образы `Docker`, основанные на различных версиях Debian (с `6` по `12`). Все базовые образы могут быть классифицированы на следующие категории: 1. **Образ `slim`**: - Наследуется от официальных образов Debian (версии 6-12). - Содержит минимальный набор правок: добавление папок, корневых сертификатов и настройка APT. 2. **Образ `main`**: - Наследуется от образа `slim`. - Включает базовый набор программного обеспечения (например, `mc`, `wget`, `htop`). - Предназначен как основной образ для создания более сложных финальных образов, таких как Nginx. 3. **Образ `develop`**: - Наследуется от образа `main`. - Включает инструменты для сборки и разработки (например, `ninja`, `make`, `cmake`). 4. **Образы `nodejs`**: - Включают версии Node.js (с 0.4 до последней). - Наследуются от образа `main`. - Содержат Node.js, npm, npmx, yarn и заголовочные файлы, установленные из tar-архивов. 5. **Образы `jdk`**: - Включают версии JDK (с 6 по 21). - Имеют два тега: - Основной тег: наследуется от `main`. - Девелоперский тег: наследуется от `develop`. ##### Конечные образы В директории `linux/ecosystem` находятся образы для конечных продуктов (например, `apache2`, `nginx`, `jira`). Эти образы обычно наследуются от соответствующих базовых образов. #### Изменение подхода к разработке Для улучшения управления образами и обеспечения актуальности предлагается следующий подход: 1. **Поддержка базовых образов**: - Все существующие базовые образы (`slim`, `main`, `develop`, `nodejs`, `jdk`) сохранятся без изменений для каждой версии Debian. - Базовые образы будут пересобираться периодически, чтобы учесть обновления и бекпорты. 2. **Введение концепции `upstream` и `deprecated`**: - **`Upstream`**: Актуальные конечные образы будут наследоваться от базовых образов для последней стабильной версии Debian. В данный момент это Debian 12. При выходе новой стабильной версии Debian, конечные образы будут переведены на новую версию. - **`Deprecated`**: Для устаревших версий базовых образов будут доступны только сами базовые образы. Конечные образы не будут обновляться для устаревших версий. 3. **Управление версиями**: - Актуальные образы будут пересобираться на основе последней `стабильной` версии `Debian`. - В актуальные образы входят ветки `current` (`стабильная`, или же `12`) как основная, а так же `LTS` но облегченная (`11`) - буду собираться только базовые образы. - Прошлая `LTS` ветка перестает поддерживаться, когда назначается новая. - При выпуске новой версии `Debian` (например, `13`), все конечные образы будут обновлены и переведены на новую версию `Debian`, если она станет стабильной. 4. **Периодическое обновление образов**: - `Все версии` базовых образов, включая `устаревшие`, будут периодически пересобираться для включения обновлений и бекпортов. 5. **Добавление новых базовых образов**: - Начиная с текущей `версии` апстрима (`12`), в нее будут постепенно добавлены дополнительные базовые образы, такие как `PHP` и `Python` и др. Эти новые базовые образы не будут бекпортированы в предыдущие устаревшие версии. Однако при переходе апстрима на новую версию (например, `13`), новые базовые образы также будут перенесены в нее и останутся в предыдущей версии (например, `12`). #### Заключение Этот подход позволит лучше управлять версиями и поддерживать актуальность образов в репозитории. Переход на концепцию upstream и deprecated поможет сосредоточиться на поддержке актуальных версий продуктов и обеспечит более стабильное и предсказуемое окружение для конечных пользователей. Введение новых базовых образов дополнительно расширит функциональность и гибкость доступных Docker-образов.