Изменил обÑдокерфайл. Теперь вместо 1000 мб всего 262 мьÑбÑ. И добавил сборку для разных платформ. ARM64 и AMD64.

This commit is contained in:
2025-03-17 14:58:29 +03:00
parent 7f1c436224
commit 382681820e
2 changed files with 35 additions and 19 deletions

View File

@@ -1,17 +1,17 @@
# Use the official Python 3.12.9 Bullseye image as the base
FROM python:3.12.9-bullseye
# Используем более легкий базовый образ
FROM python:3.12.9-slim-bullseye AS builder
# Add metadata
# Добавляем метаданные
LABEL maintainer="Сергей Антропов <sergey@antropoff.ru>"
LABEL description="Этот Dockerfile создан для внедрения подхода IaC в Ansible."
LABEL version="0.1"
LABEL contact.website="https://devops.org.ru"
# Set environment variables
# Устанавливаем переменные окружения
ENV PYTHONUNBUFFERED=1
ENV EDITOR=nano
# Install system dependencies
# Устанавливаем системные зависимости
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
@@ -25,11 +25,6 @@ RUN apt-get update && \
openssh-client \
nano \
less \
&& rm -rf /var/lib/apt/lists/*
# Install Docker CLI
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
gnupg \
@@ -42,8 +37,7 @@ RUN apt-get update && \
docker-ce-cli \
&& rm -rf /var/lib/apt/lists/*
# Install Python dependencies for Ansible and Molecule
# Устанавливаем зависимости Python для Ansible и Molecule
RUN pip install --upgrade pip && \
pip install \
ansible \
@@ -51,16 +45,35 @@ RUN pip install --upgrade pip && \
ansible-vault \
molecule \
molecule-docker \
molecule-plugins ansible-compat \
molecule-plugins \
ansible-compat \
docker
# Копируем ssh ключ
COPY id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
# Set the working directory
# Устанавливаем рабочую директорию
WORKDIR /ansible
# Default command
# Команда по умолчанию
CMD ["/bin/bash"]
# Используем многоэтапную сборку для уменьшения размера конечного образа
FROM python:3.12.9-slim-bullseye
# Копируем только необходимые файлы из промежуточного образа
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
COPY --from=builder /root/.ssh /root/.ssh
COPY --from=builder /ansible /ansible
# Устанавливаем переменные окружения
ENV PYTHONUNBUFFERED=1
ENV EDITOR=nano
# Устанавливаем рабочую директорию
WORKDIR /ansible
# Команда по умолчанию
CMD ["/bin/bash"]

View File

@@ -48,27 +48,30 @@ init:
docker:
@case "$(word 2, $(MAKECMDGOALS))" in \
build) \
docker buildx create --use --name multiarch-builder --driver docker-container; \
cp ~/.ssh/id_rsa .; \
if [ "$(RUN_MODE)" = "docker-compose" ]; then \
docker compose build $(c); \
else \
docker build -t $(REGISTRY)/ansible/$(IMAGE) .; \
docker buildx build -t $(REGISTRY)/ansible/$(IMAGE) --platform linux/amd64,linux/arm64 .; \
fi; \
rm id_rsa;; \
rebuild) \
docker buildx create --use --name multiarch-builder --driver docker-container; \
cp ~/.ssh/id_rsa .; \
if [ "$(RUN_MODE)" = "docker-compose" ]; then \
docker compose build --no-cache $(c); \
else \
docker build --no-cache -t $(REGISTRY)/ansible/$(IMAGE) .; \
docker buildx build --no-cache -t $(REGISTRY)/ansible/$(IMAGE) --platform linux/amd64,linux/arm64 .; \
fi; \
rm id_rsa;; \
prune) \
docker system prune -af;; \
release) \
docker buildx create --use --name multiarch-builder --driver docker-container; \
cp ~/.ssh/id_rsa .; \
docker login $(REGISTRY); \
docker buildx build -t $(REGISTRY)/ansible/$(IMAGE):$(TAG) --platform linux/amd64,linux/arm64 --push .; \
docker buildx build -t $(REGISTRY)/ansible/$(IMAGE):$(TAG) -t $(REGISTRY)/ansible/$(IMAGE):latest --platform linux/amd64,linux/arm64 --push .; \
rm id_rsa;; \
*) echo "Unknown action. Available actions: build, rebuild, prune, release";; \
esac