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

View File

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