From ef384475c36e0504565a076b9ebc5c3e7769f94b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BF=D0=BE=D0=B2?= Date: Sat, 25 Oct 2025 16:30:57 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20Dockerfiles=20Ubuntu/Debian=20=D0=B8?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20help=20=D0=B4=D0=BB=D1=8F=20build-image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Обновлены Dockerfiles для Ubuntu и Debian по аналогии с astra-linux - Упрощена структура: убраны лишние компоненты (kubectl, helm, kind, ansible) - Установка Docker из официального репозитория вместо пакетов дистрибутива - Добавлен systemd-sysv для корректной работы systemd - Пользователь ansible создается и используется как основной - CMD изменен на /sbin/init для запуска systemd - Добавлена информация о make docker build-image в help - Обновлен общий help (make help) с кратким описанием команды - Обновлен docker help (make docker) с подробной информацией и примерами - Показывается список доступных образов и поддерживаемых платформ - Исправлена установка ansible-lint в ansible-controller Dockerfile - Команда lint теперь использует файл .ansible-lint через volume --- Makefile | 13 +++++ dockerfiles/ansible-controller/Dockerfile | 4 +- dockerfiles/debian/Dockerfile | 69 ++++++++--------------- dockerfiles/ubuntu/Dockerfile | 65 ++++++++------------- 4 files changed, 63 insertions(+), 88 deletions(-) diff --git a/Makefile b/Makefile index c031e62..d955905 100644 --- a/Makefile +++ b/Makefile @@ -521,6 +521,12 @@ docker: echo " 💡 Тегирует: inecs/образ: (автоматически извлекает теги)"; \ echo " 💡 Отправляет: автоматически в Docker Hub"; \ echo ""; \ + echo " 🔨 make docker build-image IMAGE=<имя> - собрать отдельный образ"; \ + echo " 💡 Пример: make docker build-image IMAGE=centos"; \ + echo " 💡 Собирает: только указанный образ (multi-arch)"; \ + echo " 💡 Доступные образы: $(DOCKER_IMAGES)"; \ + echo " 💡 Платформы: $(DOCKER_PLATFORMS)"; \ + echo ""; \ echo " 🔄 make docker rebuild - полная пересборка с очисткой кеша"; \ echo " 💡 Очищает: все локальные образы и кеш"; \ echo " 💡 Пересобирает: все образы с нуля"; \ @@ -575,6 +581,12 @@ docker: echo " 💡 Тегирует: inecs/образ: (автоматически извлекает теги)"; \ echo " 💡 Отправляет: автоматически в Docker Hub"; \ echo ""; \ + echo " 🔨 make docker build-image IMAGE=<имя> - собрать отдельный образ"; \ + echo " 💡 Пример: make docker build-image IMAGE=centos"; \ + echo " 💡 Собирает: только указанный образ (multi-arch)"; \ + echo " 💡 Доступные образы: $(DOCKER_IMAGES)"; \ + echo " 💡 Платформы: $(DOCKER_PLATFORMS)"; \ + echo ""; \ echo " 🔄 make docker rebuild - полная пересборка с очисткой кеша"; \ echo " 💡 Очищает: все локальные образы и кеш"; \ echo " 💡 Пересобирает: все образы с нуля"; \ @@ -883,6 +895,7 @@ help: @echo "🐳 DOCKER ОБРАЗЫ (Multi-Arch):" @echo " make docker prepare - подготовка к работе с Docker Hub" @echo " make docker build - собрать все Docker образы (amd64 + arm64)" + @echo " make docker build-image IMAGE=<имя> - собрать отдельный образ" @echo " make docker rebuild - полная пересборка с очисткой кеша" @echo " make docker push - отправить образы в Docker Hub" @echo " make docker pull - загрузить образы из Docker Hub" diff --git a/dockerfiles/ansible-controller/Dockerfile b/dockerfiles/ansible-controller/Dockerfile index 5ef8e51..67b91b8 100644 --- a/dockerfiles/ansible-controller/Dockerfile +++ b/dockerfiles/ansible-controller/Dockerfile @@ -16,8 +16,8 @@ RUN apt-get install -y \ build-essential \ && apt-get clean -# Устанавливаем Ansible -RUN pip3 install ansible ansible-core +# Устанавливаем Ansible и ansible-lint +RUN pip3 install ansible ansible-core ansible-lint # Устанавливаем дополнительные пакеты RUN apt-get install -y \ diff --git a/dockerfiles/debian/Dockerfile b/dockerfiles/debian/Dockerfile index cdcbd1c..97e87b5 100644 --- a/dockerfiles/debian/Dockerfile +++ b/dockerfiles/debian/Dockerfile @@ -1,16 +1,16 @@ -# Debian с systemd +# Debian Bookworm с systemd # Автор: Сергей Антропов # Сайт: https://devops.org.ru -# https://hub.docker.com/_/debian FROM debian:bookworm # Обновляем систему -RUN apt-get update && apt-get upgrade -y +RUN apt-get update && apt-get dist-upgrade -y # Устанавливаем systemd и необходимые пакеты RUN apt-get install -y \ systemd \ + systemd-sysv \ dbus \ curl \ wget \ @@ -22,60 +22,39 @@ RUN apt-get install -y \ jq \ python3 \ python3-pip \ - python3-venv \ - python3-dev \ - build-essential \ && apt-get clean -# Устанавливаем pip -RUN curl -sS https://bootstrap.pypa.io/pip/3.11/get-pip.py | python3 - # Устанавливаем yq RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \ && chmod +x /usr/local/bin/yq +# Устанавливаем Docker вручную для Debian +RUN apt-get update && apt-get install -y \ + ca-certificates \ + curl \ + gnupg \ + lsb-release \ + && mkdir -p /usr/share/keyrings \ + && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \ + && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bookworm stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \ + && apt-get update \ + && apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin \ + && apt-get clean + # Устанавливаем Docker Compose RUN curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \ && chmod +x /usr/local/bin/docker-compose -# Устанавливаем kubectl -RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \ - && chmod +x kubectl \ - && mv kubectl /usr/local/bin/ +# Настраиваем systemd +RUN systemctl set-default multi-user.target -# Устанавливаем kind -RUN curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.23.0/kind-linux-amd64 \ - && chmod +x ./kind \ - && mv ./kind /usr/local/bin/ - -# Устанавливаем Helm -RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash - -# Устанавливаем Docker -RUN apt-get install -y docker.io docker-compose - -# Создаем пользователя ansible +# Создаем пользователя для Ansible RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Устанавливаем Ansible -RUN pip3 install ansible ansible-core +# Переключаемся на пользователя ansible +USER ansible +WORKDIR /home/ansible -# Устанавливаем Ansible Galaxy коллекции -RUN ansible-galaxy install geerlingguy.docker \ - && ansible-galaxy install geerlingguy.kubernetes - -# Копируем requirements.yml -COPY requirements.yml /tmp/requirements.yml - -# Устанавливаем коллекции из requirements.yml -RUN ansible-galaxy collection install -r /tmp/requirements.yml - -# Устанавливаем systemd по умолчанию -RUN systemctl set-default multi-user.target - -# Устанавливаем права на директорию ansible -RUN chown -R ansible:ansible /ansible - -# Рабочая директория -WORKDIR /ansible +# Команда по умолчанию +CMD ["/sbin/init"] diff --git a/dockerfiles/ubuntu/Dockerfile b/dockerfiles/ubuntu/Dockerfile index 892e988..120f138 100644 --- a/dockerfiles/ubuntu/Dockerfile +++ b/dockerfiles/ubuntu/Dockerfile @@ -1,16 +1,16 @@ # Ubuntu 22.04 с systemd # Автор: Сергей Антропов # Сайт: https://devops.org.ru -# https://hub.docker.com/_/ubuntu FROM ubuntu:22.04 # Обновляем систему -RUN apt-get update && apt-get upgrade -y +RUN apt-get update && apt-get dist-upgrade -y # Устанавливаем systemd и необходимые пакеты RUN apt-get install -y \ systemd \ + systemd-sysv \ dbus \ curl \ wget \ @@ -21,57 +21,40 @@ RUN apt-get install -y \ tree \ jq \ python3 \ + python3-pip \ && apt-get clean -# Устанавливаем pip -RUN curl -sS https://bootstrap.pypa.io/pip/3.10/get-pip.py | python3 - # Устанавливаем yq RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \ && chmod +x /usr/local/bin/yq +# Устанавливаем Docker вручную для Ubuntu +RUN apt-get update && apt-get install -y \ + ca-certificates \ + curl \ + gnupg \ + lsb-release \ + && mkdir -p /usr/share/keyrings \ + && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \ + && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu jammy stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \ + && apt-get update \ + && apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin \ + && apt-get clean + # Устанавливаем Docker Compose RUN curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \ && chmod +x /usr/local/bin/docker-compose -# Устанавливаем kubectl -RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \ - && chmod +x kubectl \ - && mv kubectl /usr/local/bin/ +# Настраиваем systemd +RUN systemctl set-default multi-user.target -# Устанавливаем kind -RUN curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.23.0/kind-linux-amd64 \ - && chmod +x ./kind \ - && mv ./kind /usr/local/bin/ - -# Устанавливаем Helm -RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash - -# Устанавливаем Docker -RUN apt-get install -y docker.io docker-compose - -# Создаем пользователя ansible +# Создаем пользователя для Ansible RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Устанавливаем Ansible -RUN pip3 install ansible ansible-core +# Переключаемся на пользователя ansible +USER ansible +WORKDIR /home/ansible -# Устанавливаем Ansible Galaxy коллекции -RUN ansible-galaxy install geerlingguy.docker \ - && ansible-galaxy install geerlingguy.kubernetes - -# Копируем requirements.yml -COPY requirements.yml /tmp/requirements.yml - -# Устанавливаем коллекции из requirements.yml -RUN ansible-galaxy collection install -r /tmp/requirements.yml - -# Устанавливаем systemd по умолчанию -RUN systemctl set-default multi-user.target - -# Устанавливаем права на директорию ansible -RUN chown -R ansible:ansible /ansible - -# Рабочая директория -WORKDIR /ansible +# Команда по умолчанию +CMD ["/sbin/init"]