Изменил обÑдокерфайл. Теперь вместо 1000 мб всего 262 мьÑбÑ. И добавил сборку для разных платформ. ARM64 и AMD64.
This commit is contained in:
45
Dockerfile
45
Dockerfile
@@ -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"]
|
||||||
9
Makefile
9
Makefile
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user