feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile
- Добавлена колонка 'Тип' во все таблицы истории сборок - Для push операций отображается registry вместо платформ - Сохранение пользователя при создании push лога - Исправлена ошибка с logger в push_docker_image endpoint - Улучшено отображение истории сборок с визуальными индикаторами
This commit is contained in:
790
app/alembic/dockerfiles/README.md
Normal file
790
app/alembic/dockerfiles/README.md
Normal file
@@ -0,0 +1,790 @@
|
||||
# Docker образы для универсальной системы тестирования DevOpsLab
|
||||
|
||||
**Автор:** Сергей Антропов
|
||||
**Сайт:** https://devops.org.ru
|
||||
**Версия:** 3.0.0
|
||||
|
||||
## 🐳 Обзор
|
||||
|
||||
Эта директория содержит Docker образы для различных операционных систем и компонентов, используемых в универсальной системе тестирования Ansible ролей. Все образы поддерживают multi-arch сборку (amd64, arm64, riscv64, ppc64le, s390x, 386, arm/v7, arm/v6) и автоматически публикуются в Docker Hub.
|
||||
|
||||
## 📁 Структура
|
||||
|
||||
```
|
||||
dockerfiles/
|
||||
├── ansible-controller/ # Ansible контроллер с предустановленными коллекциями
|
||||
│ ├── Dockerfile
|
||||
│ ├── docker-compose.yml
|
||||
│ ├── requirements.txt
|
||||
│ └── requirements.yml
|
||||
├── k8s/ # Kubernetes контроллер (Kind, kubectl, Helm, Istio)
|
||||
│ └── Dockerfile
|
||||
├── k8s-portforward/ # Port-forward контейнер (устаревший)
|
||||
│ ├── Dockerfile
|
||||
│ └── portforward-container.py
|
||||
├── alt-linux/ # ALT Linux P9 с systemd
|
||||
│ └── Dockerfile
|
||||
├── astra-linux/ # Astra Linux 1.7 с systemd
|
||||
│ └── Dockerfile
|
||||
├── redos/ # RED OS 9 с systemd
|
||||
│ └── Dockerfile
|
||||
├── rhel/ # Red Hat Enterprise Linux 8 с systemd
|
||||
│ └── Dockerfile
|
||||
├── centos7/ # CentOS 7 с systemd
|
||||
│ └── Dockerfile
|
||||
├── centos8/ # CentOS 8 Stream с systemd
|
||||
│ └── Dockerfile
|
||||
├── centos9/ # CentOS 9 Stream с systemd
|
||||
│ └── Dockerfile
|
||||
├── alma/ # AlmaLinux 8 с systemd
|
||||
│ └── Dockerfile
|
||||
├── rocky/ # Rocky Linux 8 с systemd
|
||||
│ └── Dockerfile
|
||||
├── ubuntu20/ # Ubuntu 20.04 LTS (focal) с systemd
|
||||
│ └── Dockerfile
|
||||
├── ubuntu22/ # Ubuntu 22.04 LTS (jammy) с systemd
|
||||
│ └── Dockerfile
|
||||
├── ubuntu24/ # Ubuntu 24.04 LTS (noble) с systemd
|
||||
│ └── Dockerfile
|
||||
├── debian9/ # Debian 9 (stretch) с systemd
|
||||
│ └── Dockerfile
|
||||
├── debian10/ # Debian 10 (buster) с systemd
|
||||
│ └── Dockerfile
|
||||
├── debian11/ # Debian 11 (bullseye) с systemd
|
||||
│ └── Dockerfile
|
||||
├── debian12/ # Debian 12 (bookworm) с systemd
|
||||
│ └── Dockerfile
|
||||
└── README.md # Этот файл
|
||||
```
|
||||
|
||||
## 🚀 Доступные образы
|
||||
|
||||
### 1. ansible-controller
|
||||
|
||||
**Базовый образ:** `ubuntu:22.04`
|
||||
**Тег:** `inecs/ansible-lab:ansible-controller-latest`
|
||||
**Описание:** Ansible контроллер с предустановленными коллекциями и инструментами
|
||||
|
||||
#### Компоненты:
|
||||
- **Ansible Core** с последними коллекциями
|
||||
- **Docker CLI** для работы с контейнерами
|
||||
- **yq** для работы с YAML
|
||||
- **jq** для работы с JSON
|
||||
|
||||
**Примечание:** Kubernetes инструменты (kubectl, Helm, Kind, Istio) были перенесены в отдельный образ `k8s`.
|
||||
|
||||
#### Предустановленные коллекции:
|
||||
```yaml
|
||||
collections:
|
||||
- name: community.docker
|
||||
version: ">=3.0.0"
|
||||
- name: community.general
|
||||
version: ">=7.0.0"
|
||||
- name: ansible.posix
|
||||
version: ">=1.5.4"
|
||||
```
|
||||
|
||||
#### Предустановленные роли:
|
||||
- `geerlingguy.docker` - управление Docker
|
||||
- `geerlingguy.kubernetes` - управление Kubernetes
|
||||
|
||||
#### Переменные окружения:
|
||||
```bash
|
||||
DOCKER_HOST=unix:///var/run/docker.sock
|
||||
ANSIBLE_FORCE_COLOR=1
|
||||
ANSIBLE_STDOUT_CALLBACK=yaml
|
||||
ANSIBLE_CALLBACKS_ENABLED=profile_tasks
|
||||
```
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Запуск контроллера
|
||||
docker run -it --rm \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v $(pwd):/workspace \
|
||||
-w /workspace \
|
||||
inecs/ansible-lab:ansible-controller-latest
|
||||
|
||||
# Выполнение Ansible команд
|
||||
docker run --rm \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v $(pwd):/workspace \
|
||||
-w /workspace \
|
||||
inecs/ansible-lab:ansible-controller-latest \
|
||||
ansible-playbook converge.yml
|
||||
```
|
||||
|
||||
### 2. k8s
|
||||
|
||||
**Базовый образ:** `ubuntu:22.04`
|
||||
**Тег:** `inecs/ansible-lab:k8s-latest`
|
||||
**Описание:** Kubernetes контроллер с инструментами для работы с Kubernetes, Helm, Istio и Kind кластерами
|
||||
|
||||
#### Компоненты:
|
||||
- **Docker CLI** (20.10.24) для работы с контейнерами
|
||||
- **kubectl** (1.34.1) для управления Kubernetes
|
||||
- **Helm** (latest) для управления пакетами Kubernetes
|
||||
- **Kind** (0.30.0) для локальных Kubernetes кластеров
|
||||
- **Istio CLI** (1.22.1) для управления Service Mesh
|
||||
- **Python 3** с модулем yaml для выполнения скриптов
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Создание Kind кластера
|
||||
docker run -it --rm \
|
||||
--name k8s-controller \
|
||||
--network kind \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock:rw \
|
||||
inecs/ansible-lab:k8s-latest \
|
||||
kind create cluster --name lab
|
||||
|
||||
# Выполнение kubectl команд
|
||||
docker exec k8s-controller kubectl get nodes
|
||||
|
||||
# Установка Helm релиза
|
||||
docker exec k8s-controller helm install prometheus prometheus-community/kube-prometheus-stack
|
||||
```
|
||||
|
||||
**Примечание:** Этот образ используется автоматически при выполнении `make k8s` команд. Контейнер запускается с именем `k8s-controller` и подключен к Docker daemon хоста.
|
||||
|
||||
### 3. Ubuntu
|
||||
|
||||
#### Ubuntu 20.04 (focal)
|
||||
|
||||
**Базовый образ:** `ubuntu:20.04`
|
||||
**Тег:** `inecs/ansible-lab:ubuntu20`
|
||||
**Описание:** Ubuntu 20.04 LTS с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- Ubuntu 20.04 LTS (Focal Fossa)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
#### Ubuntu 22.04 (jammy) - основная версия
|
||||
|
||||
**Базовый образ:** `ubuntu:22.04`
|
||||
**Тег:** `inecs/ansible-lab:ubuntu-latest` или `inecs/ansible-lab:ubuntu22`
|
||||
**Описание:** Ubuntu 22.04 LTS с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- Ubuntu 22.04 LTS (Jammy Jellyfish)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
#### Ubuntu 24.04 (noble)
|
||||
|
||||
**Базовый образ:** `ubuntu:24.04`
|
||||
**Тег:** `inecs/ansible-lab:ubuntu24`
|
||||
**Описание:** Ubuntu 24.04 LTS с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- Ubuntu 24.04 LTS (Noble Numbat)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
|
||||
**Использование:**
|
||||
```bash
|
||||
# Запуск Ubuntu контейнера
|
||||
docker run -d --privileged \
|
||||
--name ubuntu-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:ubuntu22
|
||||
```
|
||||
|
||||
### 4. Debian
|
||||
|
||||
#### Debian 9 (stretch)
|
||||
|
||||
**Базовый образ:** `debian:stretch`
|
||||
**Тег:** `inecs/ansible-lab:debian9`
|
||||
**Описание:** Debian 9 Stretch с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- Debian 9 (Stretch)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
#### Debian 10 (buster)
|
||||
|
||||
**Базовый образ:** `debian:buster`
|
||||
**Тег:** `inecs/ansible-lab:debian10`
|
||||
**Описание:** Debian 10 Buster с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- Debian 10 (Buster)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
#### Debian 11 (bullseye)
|
||||
|
||||
**Базовый образ:** `debian:bullseye`
|
||||
**Тег:** `inecs/ansible-lab:debian11`
|
||||
**Описание:** Debian 11 Bullseye с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- Debian 11 (Bullseye)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
#### Debian 12 (bookworm) - основная версия
|
||||
|
||||
**Базовый образ:** `debian:bookworm`
|
||||
**Тег:** `inecs/ansible-lab:debian-latest` или `inecs/ansible-lab:debian12`
|
||||
**Описание:** Debian 12 Bookworm с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- Debian 12 (Bookworm)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
|
||||
**Использование:**
|
||||
```bash
|
||||
# Запуск Debian контейнера
|
||||
docker run -d --privileged \
|
||||
--name debian-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:debian12
|
||||
```
|
||||
|
||||
### 5. RHEL (Red Hat Enterprise Linux)
|
||||
|
||||
**Базовый образ:** `registry.access.redhat.com/ubi8/ubi`
|
||||
**Тег:** `inecs/ansible-lab:rhel-latest`
|
||||
**Описание:** Red Hat Enterprise Linux 8 с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- RHEL 8 (Universal Base Image)
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
|
||||
**Использование:**
|
||||
```bash
|
||||
# Запуск RHEL контейнера
|
||||
docker run -d --privileged \
|
||||
--name rhel-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:rhel-latest
|
||||
```
|
||||
|
||||
### 6. CentOS
|
||||
|
||||
#### CentOS 7
|
||||
|
||||
**Базовый образ:** `centos:7`
|
||||
**Тег:** `inecs/ansible-lab:centos7`
|
||||
**Описание:** CentOS 7 с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- CentOS 7
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
#### CentOS 8
|
||||
|
||||
**Базовый образ:** `quay.io/centos/centos:stream8`
|
||||
**Тег:** `inecs/ansible-lab:centos8`
|
||||
**Описание:** CentOS 8 Stream с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- CentOS 8 Stream
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
#### CentOS 9 (stream) - основная версия
|
||||
|
||||
**Базовый образ:** `quay.io/centos/centos:stream9`
|
||||
**Тег:** `inecs/ansible-lab:centos-latest` или `inecs/ansible-lab:centos9`
|
||||
**Описание:** CentOS Stream 9 с systemd
|
||||
|
||||
**Компоненты:**
|
||||
- CentOS Stream 9
|
||||
- systemd, Python 3, базовые утилиты
|
||||
- Пользователь ansible с sudo правами
|
||||
|
||||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
|
||||
**Использование:**
|
||||
```bash
|
||||
# Запуск CentOS контейнера
|
||||
docker run -d --privileged \
|
||||
--name centos-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:centos9
|
||||
```
|
||||
|
||||
#### Настройки systemd:
|
||||
```bash
|
||||
systemctl set-default multi-user.target
|
||||
```
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Запуск CentOS контейнера
|
||||
docker run -d --privileged \
|
||||
--name centos-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:centos-latest
|
||||
```
|
||||
|
||||
### 7. alma
|
||||
|
||||
**Базовый образ:** `almalinux:8`
|
||||
**Тег:** `inecs/ansible-lab:alma-latest`
|
||||
**Описание:** AlmaLinux 8 с systemd и Docker
|
||||
|
||||
#### Компоненты:
|
||||
- **AlmaLinux 8**
|
||||
- **systemd** для управления сервисами
|
||||
|
||||
- **Python 3** с pip
|
||||
- **Пользователь ansible** с sudo правами
|
||||
|
||||
#### Установленные пакеты:
|
||||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
```bash
|
||||
systemd systemd-sysv dbus
|
||||
curl wget git vim nano jq
|
||||
python3 python3-pip
|
||||
```
|
||||
|
||||
#### Настройки systemd:
|
||||
```bash
|
||||
systemctl set-default multi-user.target
|
||||
```
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Запуск AlmaLinux контейнера
|
||||
docker run -d --privileged \
|
||||
--name alma-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:alma-latest
|
||||
```
|
||||
|
||||
### 8. rocky
|
||||
|
||||
**Базовый образ:** `rockylinux:8`
|
||||
**Тег:** `inecs/ansible-lab:rocky-latest`
|
||||
**Описание:** Rocky Linux 8 с systemd и Docker
|
||||
|
||||
#### Компоненты:
|
||||
- **Rocky Linux 8**
|
||||
- **systemd** для управления сервисами
|
||||
|
||||
- **Python 3** с pip
|
||||
- **Пользователь ansible** с sudo правами
|
||||
|
||||
#### Установленные пакеты:
|
||||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
```bash
|
||||
systemd systemd-sysv dbus
|
||||
curl wget git vim nano jq
|
||||
python3 python3-pip
|
||||
```
|
||||
|
||||
#### Настройки systemd:
|
||||
```bash
|
||||
systemctl set-default multi-user.target
|
||||
```
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Запуск Rocky Linux контейнера
|
||||
docker run -d --privileged \
|
||||
--name rocky-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:rocky-latest
|
||||
```
|
||||
|
||||
### 9. alt-linux
|
||||
|
||||
**Базовый образ:** `altlinux/p9`
|
||||
**Тег:** `inecs/ansible-lab:alt-linux-latest`
|
||||
**Описание:** ALT Linux 9 с systemd и Docker
|
||||
|
||||
#### Компоненты:
|
||||
- **ALT Linux 9** (Platform 9)
|
||||
- **systemd** для управления сервисами
|
||||
|
||||
- **Python 3** с pip
|
||||
- **Пользователь ansible** с sudo правами
|
||||
|
||||
#### Установленные пакеты:
|
||||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
```bash
|
||||
systemd systemd-sysv dbus
|
||||
curl wget git vim nano htop tree jq
|
||||
python3 python3-pip
|
||||
```
|
||||
|
||||
#### Настройки systemd:
|
||||
```bash
|
||||
systemctl set-default multi-user.target
|
||||
```
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Запуск ALT Linux контейнера
|
||||
docker run -d --privileged \
|
||||
--name alt-linux-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:alt-linux-latest
|
||||
```
|
||||
|
||||
### 10. astra-linux
|
||||
|
||||
**Базовый образ:** `astralinux/astra-1.7`
|
||||
**Тег:** `inecs/ansible-lab:astra-linux-latest`
|
||||
**Описание:** Astra Linux 1.7 с systemd и Docker
|
||||
|
||||
#### Компоненты:
|
||||
- **Astra Linux 1.7**
|
||||
- **systemd** для управления сервисами
|
||||
|
||||
- **Python 3** с pip
|
||||
- **Пользователь ansible** с sudo правами
|
||||
|
||||
#### Установленные пакеты:
|
||||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
```bash
|
||||
systemd systemd-sysv dbus
|
||||
curl wget git vim nano htop tree jq
|
||||
python3 python3-pip
|
||||
```
|
||||
|
||||
#### Настройки systemd:
|
||||
```bash
|
||||
systemctl set-default multi-user.target
|
||||
```
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Запуск Astra Linux контейнера
|
||||
docker run -d --privileged \
|
||||
--name astra-linux-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:astra-linux-latest
|
||||
```
|
||||
|
||||
### 11. redos
|
||||
|
||||
**Базовый образ:** `redos/redos:9`
|
||||
**Тег:** `inecs/ansible-lab:redos-latest`
|
||||
**Описание:** RED OS 9 с systemd и Docker
|
||||
|
||||
#### Компоненты:
|
||||
- **RED OS 9**
|
||||
- **systemd** для управления сервисами
|
||||
|
||||
- **Python 3** с pip
|
||||
- **Пользователь ansible** с sudo правами
|
||||
|
||||
#### Установленные пакеты:
|
||||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||||
```bash
|
||||
systemd systemd-sysv dbus
|
||||
curl wget git vim nano htop tree jq
|
||||
python3 python3-pip
|
||||
```
|
||||
|
||||
#### Настройки systemd:
|
||||
```bash
|
||||
systemctl set-default multi-user.target
|
||||
```
|
||||
|
||||
#### Использование:
|
||||
```bash
|
||||
# Запуск RED OS контейнера
|
||||
docker run -d --privileged \
|
||||
--name redos-test \
|
||||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||||
--tmpfs /run --tmpfs /run/lock \
|
||||
--cap-add SYS_ADMIN \
|
||||
inecs/ansible-lab:redos-latest
|
||||
```
|
||||
|
||||
## 🔧 Управление образами
|
||||
|
||||
### Сборка всех образов
|
||||
|
||||
```bash
|
||||
# Сборка всех образов (multi-arch)
|
||||
make docker build
|
||||
|
||||
# Сборка конкретного образа
|
||||
make docker build-image IMAGE=ubuntu
|
||||
|
||||
# Полная пересборка с очисткой кеша
|
||||
make docker rebuild
|
||||
```
|
||||
|
||||
### Отправка в Docker Hub
|
||||
|
||||
```bash
|
||||
# Отправка всех образов
|
||||
make docker push
|
||||
|
||||
# Загрузка всех образов
|
||||
make docker pull
|
||||
```
|
||||
|
||||
### Очистка образов
|
||||
|
||||
```bash
|
||||
# Очистка локальных образов
|
||||
make docker clean
|
||||
|
||||
# Полная очистка Docker
|
||||
make docker purge
|
||||
```
|
||||
|
||||
### Информация об образах
|
||||
|
||||
```bash
|
||||
# Информация о собранных образах
|
||||
make docker info
|
||||
|
||||
# Диагностика проблем
|
||||
make docker diagnose
|
||||
```
|
||||
|
||||
## 🏗️ Multi-Arch поддержка
|
||||
|
||||
### Поддерживаемые архитектуры
|
||||
|
||||
| Архитектура | Описание | Статус |
|
||||
|-------------|----------|--------|
|
||||
| `linux/amd64` | Intel/AMD 64-bit | ✅ Поддерживается |
|
||||
| `linux/arm64` | ARM 64-bit | ✅ Поддерживается |
|
||||
| `linux/riscv64` | RISC-V 64-bit | ✅ Поддерживается |
|
||||
| `linux/ppc64le` | PowerPC 64-bit LE | ✅ Поддерживается |
|
||||
| `linux/s390x` | IBM Z 64-bit | ✅ Поддерживается |
|
||||
| `linux/386` | Intel 32-bit | ✅ Поддерживается |
|
||||
| `linux/arm/v7` | ARM 32-bit v7 | ✅ Поддерживается |
|
||||
| `linux/arm/v6` | ARM 32-bit v6 | ✅ Поддерживается |
|
||||
|
||||
### Настройка builder'а
|
||||
|
||||
```bash
|
||||
# Настройка multi-arch builder
|
||||
make docker setup-builder
|
||||
|
||||
# Проверка builder'а
|
||||
make docker diagnose
|
||||
|
||||
# Сброс builder'а при проблемах
|
||||
make docker reset-builder
|
||||
```
|
||||
|
||||
## 🚀 Использование в preset'ах
|
||||
|
||||
### Пример preset'а с собственными образами
|
||||
|
||||
```yaml
|
||||
# molecule/presets/custom-images.yml
|
||||
---
|
||||
#description: Preset с собственными образами DevOpsLab
|
||||
docker_network: labnet
|
||||
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
|
||||
|
||||
# Собственные образы
|
||||
images:
|
||||
ubuntu: "inecs/ansible-lab:ubuntu-latest"
|
||||
debian: "inecs/ansible-lab:debian-latest"
|
||||
rhel: "inecs/ansible-lab:rhel-latest"
|
||||
centos: "inecs/ansible-lab:centos-latest"
|
||||
alma: "inecs/ansible-lab:alma-latest"
|
||||
rocky: "inecs/ansible-lab:rocky-latest"
|
||||
alt: "inecs/ansible-lab:alt-linux-latest"
|
||||
astra: "inecs/ansible-lab:astra-linux-latest"
|
||||
redos: "inecs/ansible-lab:redos-latest"
|
||||
|
||||
systemd_defaults:
|
||||
privileged: true
|
||||
command: "/sbin/init"
|
||||
volumes:
|
||||
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
|
||||
tmpfs: ["/run", "/run/lock"]
|
||||
capabilities: ["SYS_ADMIN"]
|
||||
|
||||
hosts:
|
||||
- name: ubuntu1
|
||||
family: ubuntu
|
||||
groups: [web, frontend]
|
||||
- name: debian1
|
||||
family: debian
|
||||
groups: [web, frontend]
|
||||
- name: rhel1
|
||||
family: rhel
|
||||
groups: [database, backend]
|
||||
- name: centos1
|
||||
family: centos
|
||||
groups: [database, backend]
|
||||
- name: alma1
|
||||
family: alma
|
||||
groups: [monitoring]
|
||||
- name: rocky1
|
||||
family: rocky
|
||||
groups: [monitoring]
|
||||
- name: alt1
|
||||
family: alt
|
||||
groups: [security]
|
||||
- name: astra1
|
||||
family: astra
|
||||
groups: [security]
|
||||
- name: redos1
|
||||
family: redos
|
||||
groups: [security]
|
||||
```
|
||||
|
||||
### Тестирование с собственными образами
|
||||
|
||||
```bash
|
||||
# Тестирование с собственными образами
|
||||
make custom-images test full
|
||||
|
||||
# Проверка наличия образов
|
||||
make custom-images check
|
||||
|
||||
# Сборка всех образов
|
||||
make custom-images build
|
||||
```
|
||||
|
||||
## 📊 Мониторинг и диагностика
|
||||
|
||||
### Проверка образов
|
||||
|
||||
```bash
|
||||
# Проверка размера образов
|
||||
docker images | grep inecs/ansible-lab
|
||||
|
||||
# Проверка архитектур
|
||||
docker manifest inspect inecs/ansible-lab:ubuntu-latest
|
||||
|
||||
# Проверка содержимого образа
|
||||
docker run --rm inecs/ansible-lab:ubuntu-latest cat /etc/os-release
|
||||
```
|
||||
|
||||
### Логи сборки
|
||||
|
||||
```bash
|
||||
# Подробные логи сборки
|
||||
make docker build 2>&1 | tee build.log
|
||||
|
||||
# Логи конкретного образа
|
||||
make docker build-image IMAGE=ubuntu 2>&1 | tee ubuntu-build.log
|
||||
```
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Проблемы с сборкой
|
||||
|
||||
1. **Builder не создается:**
|
||||
```bash
|
||||
make docker diagnose
|
||||
make docker reset-builder
|
||||
```
|
||||
|
||||
2. **Образы не собираются:**
|
||||
```bash
|
||||
make docker clean
|
||||
make docker setup-builder
|
||||
make docker build
|
||||
```
|
||||
|
||||
3. **Проблемы с multi-arch:**
|
||||
```bash
|
||||
make docker clean-builder
|
||||
make docker setup-builder
|
||||
```
|
||||
|
||||
### Проблемы с образами
|
||||
|
||||
1. **Образы не запускаются:**
|
||||
```bash
|
||||
# Проверка systemd
|
||||
docker run --rm --privileged inecs/ansible-lab:ubuntu-latest systemctl status
|
||||
|
||||
# Проверка Docker
|
||||
docker run --rm --privileged inecs/ansible-lab:ubuntu-latest docker --version
|
||||
```
|
||||
|
||||
2. **Проблемы с правами:**
|
||||
```bash
|
||||
# Проверка пользователя ansible
|
||||
docker run --rm inecs/ansible-lab:ubuntu-latest id ansible
|
||||
|
||||
# Проверка sudo прав
|
||||
docker run --rm inecs/ansible-lab:ubuntu-latest sudo -l
|
||||
```
|
||||
|
||||
## 📈 Производительность
|
||||
|
||||
### Оптимизация сборки
|
||||
|
||||
```bash
|
||||
# Использование кеша Docker
|
||||
make docker build
|
||||
|
||||
# Очистка кеша при проблемах
|
||||
make docker rebuild
|
||||
```
|
||||
|
||||
### Оптимизация образов
|
||||
|
||||
- **Многоэтапная сборка** для уменьшения размера
|
||||
- **Кеширование слоев** для ускорения сборки
|
||||
- **Минимальные базовые образы** для безопасности
|
||||
- **Оптимизированные зависимости** для производительности
|
||||
|
||||
## 🔒 Безопасность
|
||||
|
||||
### Безопасность образов
|
||||
|
||||
- **Регулярные обновления** базовых образов
|
||||
- **Минимальные права** для пользователей
|
||||
- **Сканирование уязвимостей** в CI/CD
|
||||
- **Подписанные образы** для целостности
|
||||
|
||||
### Лучшие практики
|
||||
|
||||
1. **Используйте конкретные теги** вместо `latest`
|
||||
2. **Регулярно обновляйте** базовые образы
|
||||
3. **Сканируйте образы** на уязвимости
|
||||
4. **Используйте multi-arch** для совместимости
|
||||
|
||||
## 📚 Дополнительные ресурсы
|
||||
|
||||
- [Docker Multi-Arch Build](https://docs.docker.com/buildx/working-with-buildx/)
|
||||
- [Ansible Collections](https://docs.ansible.com/ansible/latest/collections_guide/index.html)
|
||||
- [Molecule Documentation](https://molecule.readthedocs.io/)
|
||||
- [Systemd in Containers](https://systemd.io/CONTAINER_INTERFACE/)
|
||||
|
||||
---
|
||||
|
||||
**Автор:** Сергей Антропов
|
||||
**Сайт:** https://devops.org.ru
|
||||
52
app/alembic/dockerfiles/alma/Dockerfile
Normal file
52
app/alembic/dockerfiles/alma/Dockerfile
Normal file
@@ -0,0 +1,52 @@
|
||||
# AlmaLinux с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# https://hub.docker.com/_/almalinux
|
||||
|
||||
FROM almalinux:8
|
||||
|
||||
# Обновляем систему
|
||||
RUN dnf update -y && dnf upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN dnf install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python39 \
|
||||
python39-pip \
|
||||
sudo \
|
||||
&& dnf clean all
|
||||
|
||||
# Создаем symlink для python3 -> python3.9
|
||||
RUN ln -sf /usr/bin/python3.9 /usr/bin/python3
|
||||
|
||||
# Устанавливаем yq
|
||||
# RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
# && chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker
|
||||
# RUN dnf install -y dnf-plugins-core \
|
||||
# && dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo \
|
||||
# && dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
53
app/alembic/dockerfiles/alt10/Dockerfile
Normal file
53
app/alembic/dockerfiles/alt10/Dockerfile
Normal file
@@ -0,0 +1,53 @@
|
||||
# ALT Linux 10 (Platform 10) с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# https://hub.docker.com/_/alt/tags
|
||||
# Тег: inecs/ansible-lab:alt10-latest
|
||||
|
||||
FROM alt:p10
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем pip для Python 3.11
|
||||
RUN curl -sS https://bootstrap.pypa.io/pip/get-pip.py | python3
|
||||
|
||||
# Устанавливаем yq
|
||||
# RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
# && chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker вручную для ALT Linux
|
||||
# RUN apt-get update && apt-get install -y \
|
||||
# ca-certificates \
|
||||
# curl \
|
||||
# gnupg \
|
||||
# && 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
53
app/alembic/dockerfiles/alt9/Dockerfile
Normal file
53
app/alembic/dockerfiles/alt9/Dockerfile
Normal file
@@ -0,0 +1,53 @@
|
||||
# ALT Linux 9 (Platform 9) с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# https://hub.docker.com/_/alt/tags
|
||||
# Тег: inecs/ansible-lab:alt9-latest
|
||||
|
||||
FROM alt:p9
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем pip для Python 3.7
|
||||
RUN curl -sS https://bootstrap.pypa.io/pip/3.7/get-pip.py | python3
|
||||
|
||||
# Устанавливаем yq
|
||||
# RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
# && chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker вручную для ALT Linux
|
||||
# RUN apt-get update && apt-get install -y \
|
||||
# ca-certificates \
|
||||
# curl \
|
||||
# gnupg \
|
||||
# && 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
100
app/alembic/dockerfiles/ansible-controller/Dockerfile
Normal file
100
app/alembic/dockerfiles/ansible-controller/Dockerfile
Normal file
@@ -0,0 +1,100 @@
|
||||
# Ansible Controller с предустановленными коллекциями
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get upgrade -y && apt-get clean
|
||||
|
||||
# Устанавливаем Python и Ansible
|
||||
RUN apt-get install -y \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
python3-dev \
|
||||
build-essential \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем Ansible, ansible-lint, passlib
|
||||
RUN pip3 install ansible ansible-core ansible-lint passlib
|
||||
|
||||
# Устанавливаем дополнительные пакеты
|
||||
RUN apt-get install -y \
|
||||
curl \
|
||||
wget \
|
||||
git \
|
||||
vim \
|
||||
nano \
|
||||
htop \
|
||||
tree \
|
||||
jq \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем yq
|
||||
RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
&& chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker CLI
|
||||
RUN apt-get install -y docker.io 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/
|
||||
|
||||
# Устанавливаем Helm
|
||||
RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||
|
||||
# Устанавливаем 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/
|
||||
|
||||
## Устанавливаем Istio CLI
|
||||
#RUN curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.22.1 sh - \
|
||||
# && mv istio-1.22.1/bin/istioctl /usr/local/bin/ \
|
||||
# && rm -rf istio-1.22.1
|
||||
|
||||
# Копируем файлы зависимостей
|
||||
COPY requirements.yml /tmp/requirements.yml
|
||||
COPY requirements.txt /tmp/requirements.txt
|
||||
|
||||
# Устанавливаем Python зависимости
|
||||
RUN pip3 install -r /tmp/requirements.txt
|
||||
|
||||
# Устанавливаем Ansible коллекции
|
||||
RUN ansible-galaxy collection install -r /tmp/requirements.yml
|
||||
|
||||
# Создаем пользователя ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Создаем рабочую директорию
|
||||
WORKDIR /ansible
|
||||
|
||||
# Устанавливаем права
|
||||
RUN chown -R ansible:ansible /ansible
|
||||
|
||||
# Переключаемся на пользователя ansible
|
||||
USER ansible
|
||||
|
||||
# Устанавливаем дополнительные роли
|
||||
RUN ansible-galaxy install geerlingguy.docker \
|
||||
&& ansible-galaxy install geerlingguy.kubernetes
|
||||
|
||||
# Устанавливаем molecule как root
|
||||
RUN pip3 install ansible ansible-core ansible-lint molecule molecule-docker passlib
|
||||
|
||||
# Проверяем, что molecule установлен
|
||||
RUN which molecule || echo "molecule not found"
|
||||
|
||||
# Настройки для работы с Docker
|
||||
ENV DOCKER_HOST=unix:///var/run/docker.sock
|
||||
ENV ANSIBLE_FORCE_COLOR=1
|
||||
ENV ANSIBLE_STDOUT_CALLBACK=yaml
|
||||
ENV ANSIBLE_CALLBACKS_ENABLED=profile_tasks
|
||||
ENV PATH="/home/ansible/.local/bin:$PATH"
|
||||
|
||||
# Команда по умолчанию
|
||||
CMD ["sleep", "infinity"]
|
||||
@@ -0,0 +1,22 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
ansible-controller:
|
||||
image: inecs/ansible-lab:ansible-controller-latest
|
||||
container_name: ansible-controller
|
||||
privileged: true
|
||||
command: sleep infinity
|
||||
environment:
|
||||
DOCKER_HOST: unix:///var/run/docker.sock
|
||||
ANSIBLE_VAULT_PASSWORD_FILE: /ansible/vault/.vault
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- .:/ansible
|
||||
working_dir: /ansible
|
||||
networks:
|
||||
- labnet
|
||||
|
||||
networks:
|
||||
labnet:
|
||||
external: true
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Python зависимости для Ansible Controller
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Основные зависимости для работы с паролями
|
||||
passlib>=1.7.4
|
||||
|
||||
# Дополнительные зависимости для безопасности
|
||||
bcrypt>=4.0.1
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
# Ansible Collections for Molecule Universal
|
||||
collections:
|
||||
- name: community.docker
|
||||
version: ">=3.0.0"
|
||||
- name: community.general
|
||||
version: ">=7.0.0"
|
||||
- name: ansible.posix
|
||||
version: ">=1.5.4"
|
||||
70
app/alembic/dockerfiles/astra-linux/Dockerfile
Normal file
70
app/alembic/dockerfiles/astra-linux/Dockerfile
Normal file
@@ -0,0 +1,70 @@
|
||||
# Astra Linux с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# https://registry.astralinux.ru/browse/library/
|
||||
# ВАЖНО: Базовый образ поддерживает только linux/amd64
|
||||
# Для сборки используйте: docker buildx build --platform linux/amd64
|
||||
|
||||
FROM registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем yq (автоопределение архитектуры)
|
||||
# RUN ARCH=$(dpkg --print-architecture | sed 's/amd64/amd64/; s/arm64/arm64/; s/aarch64/arm64/') && \
|
||||
# wget -qO /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${ARCH}" && \
|
||||
# chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker вручную для AstraLinux (автоопределение архитектуры)
|
||||
# RUN ARCH=$(dpkg --print-architecture) && \
|
||||
# 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=${ARCH} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian buster 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
|
||||
|
||||
# Отключаем Parsec для работы в контейнере
|
||||
RUN if [ -f /etc/parsec/parsec.conf ]; then \
|
||||
sed -i 's/enabled=1/enabled=0/' /etc/parsec/parsec.conf || true; \
|
||||
fi && \
|
||||
if [ -f /lib/modules/$(uname -r)/parsec.ko ]; then \
|
||||
mv /lib/modules/$(uname -r)/parsec.ko /lib/modules/$(uname -r)/parsec.ko.disabled || true; \
|
||||
fi && \
|
||||
systemctl disable parsec 2>/dev/null || true
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
79
app/alembic/dockerfiles/astra-linux/Dockerfile.arm64
Normal file
79
app/alembic/dockerfiles/astra-linux/Dockerfile.arm64
Normal file
@@ -0,0 +1,79 @@
|
||||
# Astra Linux совместимый образ для ARM64
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# Базируется на Debian для совместимости с ARM64
|
||||
# ВАЖНО: Это эмуляция Astra Linux на Debian для ARM64
|
||||
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
# Устанавливаем переменные окружения
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV LANG=ru_RU.UTF-8
|
||||
ENV LANGUAGE=ru_RU:ru
|
||||
ENV LC_ALL=ru_RU.UTF-8
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем локали
|
||||
RUN apt-get install -y locales && \
|
||||
sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \
|
||||
locale-gen
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
ca-certificates \
|
||||
gnupg \
|
||||
lsb-release \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем yq (автоопределение архитектуры)
|
||||
RUN ARCH=$(dpkg --print-architecture | sed 's/amd64/amd64/; s/arm64/arm64/; s/aarch64/arm64/') && \
|
||||
wget -qO /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${ARCH}" && \
|
||||
chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker для ARM64
|
||||
RUN ARCH=$(dpkg --print-architecture) && \
|
||||
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=${ARCH} 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
|
||||
|
||||
# Создаем файлы конфигурации для эмуляции Astra Linux
|
||||
RUN echo "astra-linux" > /etc/os-release && \
|
||||
echo "VERSION_ID=\"1.7.6.uu2\"" >> /etc/os-release && \
|
||||
echo "PRETTY_NAME=\"Astra Linux 1.7.6.uu2 (ARM64 Compatible)\"" >> /etc/os-release
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
50
app/alembic/dockerfiles/centos7/Dockerfile
Normal file
50
app/alembic/dockerfiles/centos7/Dockerfile
Normal file
@@ -0,0 +1,50 @@
|
||||
# CentOS 7 с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM centos:7
|
||||
|
||||
# Настраиваем vault репозитории для CentOS 7 (так как основные репозитории больше не поддерживаются)
|
||||
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo && \
|
||||
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
|
||||
|
||||
# Обновляем систему
|
||||
RUN yum update -y && yum upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN yum install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& yum clean all
|
||||
|
||||
# Устанавливаем yq
|
||||
# RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
# && chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker
|
||||
# RUN curl -fsSL https://get.docker.com | sh
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
50
app/alembic/dockerfiles/centos8/Dockerfile
Normal file
50
app/alembic/dockerfiles/centos8/Dockerfile
Normal file
@@ -0,0 +1,50 @@
|
||||
# CentOS 8 с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM quay.io/centos/centos:8
|
||||
|
||||
# Настраиваем vault репозитории для CentOS 8 (так как основные репозитории больше не поддерживаются)
|
||||
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo && \
|
||||
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
|
||||
|
||||
# Обновляем систему
|
||||
RUN dnf update -y && dnf upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN dnf install -y --allowerasing \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& dnf clean all
|
||||
|
||||
# Устанавливаем yq
|
||||
# RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
# && chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker
|
||||
# RUN curl -fsSL https://get.docker.com | sh
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
46
app/alembic/dockerfiles/centos9/Dockerfile
Normal file
46
app/alembic/dockerfiles/centos9/Dockerfile
Normal file
@@ -0,0 +1,46 @@
|
||||
# CentOS с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM quay.io/centos/centos:stream9
|
||||
|
||||
# Обновляем систему
|
||||
RUN dnf update -y && dnf upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN dnf install -y --allowerasing \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& dnf clean all
|
||||
|
||||
# Устанавливаем yq
|
||||
# RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
# && chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker
|
||||
# RUN curl -fsSL https://get.docker.com | sh
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
62
app/alembic/dockerfiles/debian10/Dockerfile
Normal file
62
app/alembic/dockerfiles/debian10/Dockerfile
Normal file
@@ -0,0 +1,62 @@
|
||||
# Debian 10 Buster с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM debian:10
|
||||
|
||||
# Устанавливаем переменные окружения для автоматического ответа на запросы
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Настраиваем archive репозитории для Debian 10 (так как основные репозитории больше не поддерживаются)
|
||||
RUN sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list && \
|
||||
sed -i 's|http://security.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list && \
|
||||
echo "deb http://archive.debian.org/debian buster main" > /etc/apt/sources.list && \
|
||||
echo "deb http://archive.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем 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=$(dpkg --print-architecture) 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
56
app/alembic/dockerfiles/debian11/Dockerfile
Normal file
56
app/alembic/dockerfiles/debian11/Dockerfile
Normal file
@@ -0,0 +1,56 @@
|
||||
# Debian 11 Bullseye с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM debian:11
|
||||
|
||||
# Устанавливаем переменные окружения для автоматического ответа на запросы
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем 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=$(dpkg --print-architecture) 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
56
app/alembic/dockerfiles/debian12/Dockerfile
Normal file
56
app/alembic/dockerfiles/debian12/Dockerfile
Normal file
@@ -0,0 +1,56 @@
|
||||
# Debian 12 Bookworm с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM debian:bookworm
|
||||
|
||||
# Устанавливаем переменные окружения для автоматического ответа на запросы
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем 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=$(dpkg --print-architecture) 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
62
app/alembic/dockerfiles/debian9/Dockerfile
Normal file
62
app/alembic/dockerfiles/debian9/Dockerfile
Normal file
@@ -0,0 +1,62 @@
|
||||
# Debian 9 Stretch с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM debian:9
|
||||
|
||||
# Устанавливаем переменные окружения для автоматического ответа на запросы
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Настраиваем archive репозитории для Debian 9 (так как основные репозитории больше не поддерживаются)
|
||||
RUN sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list && \
|
||||
sed -i 's|http://security.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list && \
|
||||
echo "deb http://archive.debian.org/debian stretch main" > /etc/apt/sources.list && \
|
||||
echo "deb http://archive.debian.org/debian-security stretch/updates main" >> /etc/apt/sources.list
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем 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=$(dpkg --print-architecture) 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
43
app/alembic/dockerfiles/k8s-portforward/Dockerfile
Normal file
43
app/alembic/dockerfiles/k8s-portforward/Dockerfile
Normal file
@@ -0,0 +1,43 @@
|
||||
# Kubernetes Port-Forward Container
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
ARG TARGETARCH
|
||||
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get upgrade -y && apt-get clean
|
||||
|
||||
# Устанавливаем базовые пакеты + socat для форвардинга портов
|
||||
RUN apt-get install -y \
|
||||
wget \
|
||||
curl \
|
||||
bash \
|
||||
ca-certificates \
|
||||
python3 \
|
||||
python3-yaml \
|
||||
socat \
|
||||
netcat-openbsd \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем kubectl
|
||||
RUN if [ "${TARGETARCH}" = "amd64" ]; then \
|
||||
wget -O kubectl "https://dl.k8s.io/release/v1.34.1/bin/linux/amd64/kubectl"; \
|
||||
else \
|
||||
wget -O kubectl "https://dl.k8s.io/release/v1.34.1/bin/linux/arm64/kubectl"; \
|
||||
fi && \
|
||||
chmod +x kubectl && \
|
||||
mv kubectl /usr/local/bin/
|
||||
|
||||
# Создаем рабочий каталог
|
||||
WORKDIR /portforward
|
||||
|
||||
# Копируем скрипт порт-форвардинга
|
||||
COPY portforward-container.py /portforward/portforward-container.py
|
||||
|
||||
# Делаем скрипт исполняемым
|
||||
RUN chmod +x /portforward/portforward-container.py
|
||||
|
||||
# Команда по умолчанию
|
||||
CMD ["python3", "/portforward/portforward-container.py"]
|
||||
145
app/alembic/dockerfiles/k8s-portforward/portforward-container.py
Executable file
145
app/alembic/dockerfiles/k8s-portforward/portforward-container.py
Executable file
@@ -0,0 +1,145 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Скрипт для работы внутри контейнера k8s-portforward
|
||||
Автор: Сергей Антропов
|
||||
Сайт: https://devops.org.ru
|
||||
"""
|
||||
import sys
|
||||
import yaml
|
||||
import subprocess
|
||||
import time
|
||||
import os
|
||||
import signal
|
||||
import json
|
||||
|
||||
def run_kubectl_portforward(cluster_name, namespace, service, remote_port, local_port):
|
||||
"""Запускает kubectl port-forward внутри контейнера"""
|
||||
cmd = [
|
||||
"kubectl",
|
||||
f"--server=https://{cluster_name}-control-plane:6443",
|
||||
"--insecure-skip-tls-verify",
|
||||
"port-forward",
|
||||
"-n", namespace,
|
||||
service,
|
||||
f"{local_port}:{remote_port}"
|
||||
]
|
||||
|
||||
print(f"[portforward] Запуск: {' '.join(cmd)}")
|
||||
process = subprocess.Popen(
|
||||
cmd,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True
|
||||
)
|
||||
|
||||
return process
|
||||
|
||||
def main():
|
||||
"""Главная функция"""
|
||||
# Загружаем preset
|
||||
preset_file = "/workspace/molecule/presets/k8s/kubernetes.yml"
|
||||
|
||||
if not os.path.exists(preset_file):
|
||||
print(f"❌ Файл {preset_file} не найден")
|
||||
print("💡 Убедитесь, что workspace подключен в контейнер")
|
||||
sys.exit(1)
|
||||
|
||||
with open(preset_file, 'r') as f:
|
||||
preset = yaml.safe_load(f)
|
||||
|
||||
cluster_name = preset['kind_clusters'][0]['name']
|
||||
addon_ports = preset['kind_clusters'][0].get('addon_ports', {})
|
||||
|
||||
print(f"🔌 Запуск порт-форвардинга для кластера: {cluster_name}")
|
||||
|
||||
processes = []
|
||||
|
||||
# Ingress HTTP
|
||||
if addon_ports.get('ingress_http'):
|
||||
port = addon_ports['ingress_http']
|
||||
print(f" - Ingress HTTP: {port} -> ingress-nginx-controller:80")
|
||||
proc = run_kubectl_portforward(
|
||||
cluster_name, "ingress-nginx",
|
||||
"svc/ingress-nginx-controller", 80, port
|
||||
)
|
||||
processes.append(proc)
|
||||
|
||||
# Ingress HTTPS
|
||||
if addon_ports.get('ingress_https'):
|
||||
port = addon_ports['ingress_https']
|
||||
print(f" - Ingress HTTPS: {port} -> ingress-nginx-controller:443")
|
||||
proc = run_kubectl_portforward(
|
||||
cluster_name, "ingress-nginx",
|
||||
"svc/ingress-nginx-controller", 443, port
|
||||
)
|
||||
processes.append(proc)
|
||||
|
||||
# Prometheus
|
||||
if addon_ports.get('prometheus'):
|
||||
port = addon_ports['prometheus']
|
||||
print(f" - Prometheus: {port} -> monitoring-kube-prometheus-prometheus:9090")
|
||||
proc = run_kubectl_portforward(
|
||||
cluster_name, "monitoring",
|
||||
"svc/monitoring-kube-prometheus-prometheus", 9090, port
|
||||
)
|
||||
processes.append(proc)
|
||||
|
||||
# Grafana
|
||||
if addon_ports.get('grafana'):
|
||||
port = addon_ports['grafana']
|
||||
print(f" - Grafana: {port} -> monitoring-grafana:80")
|
||||
proc = run_kubectl_portforward(
|
||||
cluster_name, "monitoring",
|
||||
"svc/monitoring-grafana", 80, port
|
||||
)
|
||||
processes.append(proc)
|
||||
|
||||
# Kiali
|
||||
if addon_ports.get('kiali'):
|
||||
port = addon_ports['kiali']
|
||||
print(f" - Kiali: {port} -> kiali:20001")
|
||||
proc = run_kubectl_portforward(
|
||||
cluster_name, "istio-system",
|
||||
"svc/kiali", 20001, port
|
||||
)
|
||||
processes.append(proc)
|
||||
|
||||
# Metrics Server
|
||||
if addon_ports.get('metrics_server'):
|
||||
port = addon_ports['metrics_server']
|
||||
print(f" - Metrics Server: {port} -> metrics-server:4443")
|
||||
proc = run_kubectl_portforward(
|
||||
cluster_name, "kube-system",
|
||||
"svc/metrics-server", 4443, port
|
||||
)
|
||||
processes.append(proc)
|
||||
|
||||
print("✅ Все порты запущены. Ожидание завершения...")
|
||||
print("💡 Контейнер будет работать, пока все port-forward активны")
|
||||
|
||||
# Ожидание завершения процессов
|
||||
try:
|
||||
while True:
|
||||
time.sleep(1)
|
||||
# Проверяем, что все процессы еще работают
|
||||
alive = [p for p in processes if p.poll() is None]
|
||||
if not alive:
|
||||
print("⚠️ Все port-forward завершились")
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
print("\n🛑 Получен сигнал завершения...")
|
||||
|
||||
# Завершаем все процессы
|
||||
print("🗑️ Завершение port-forward...")
|
||||
for proc in processes:
|
||||
if proc.poll() is None:
|
||||
proc.terminate()
|
||||
try:
|
||||
proc.wait(timeout=5)
|
||||
except subprocess.TimeoutExpired:
|
||||
proc.kill()
|
||||
|
||||
print("✅ Завершено")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
73
app/alembic/dockerfiles/k8s/Dockerfile
Normal file
73
app/alembic/dockerfiles/k8s/Dockerfile
Normal file
@@ -0,0 +1,73 @@
|
||||
# Kubernetes Kind Container - Multi-Arch
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
ARG TARGETARCH
|
||||
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get upgrade -y && apt-get clean
|
||||
|
||||
# Устанавливаем базовые пакеты
|
||||
RUN apt-get install -y \
|
||||
wget \
|
||||
curl \
|
||||
git \
|
||||
vim \
|
||||
bash \
|
||||
ca-certificates \
|
||||
python3 \
|
||||
python3-yaml \
|
||||
file \
|
||||
apt-transport-https \
|
||||
gnupg \
|
||||
lsb-release \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем Docker CLI
|
||||
RUN DOCKER_VERSION=20.10.24 && \
|
||||
if [ "${TARGETARCH}" = "amd64" ]; then \
|
||||
wget -O /tmp/docker-cli.tgz "https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VERSION}.tgz" && \
|
||||
tar -xz -C /tmp -f /tmp/docker-cli.tgz && \
|
||||
mv /tmp/docker/docker /usr/local/bin/ && \
|
||||
rm -rf /tmp/docker-cli.tgz /tmp/docker; \
|
||||
else \
|
||||
wget -O /tmp/docker-cli.tgz "https://download.docker.com/linux/static/stable/aarch64/docker-${DOCKER_VERSION}.tgz" && \
|
||||
tar -xz -C /tmp -f /tmp/docker-cli.tgz && \
|
||||
mv /tmp/docker/docker /usr/local/bin/ && \
|
||||
rm -rf /tmp/docker-cli.tgz /tmp/docker; \
|
||||
fi && \
|
||||
chmod +x /usr/local/bin/docker
|
||||
|
||||
# Устанавливаем kubectl
|
||||
RUN if [ "${TARGETARCH}" = "amd64" ]; then \
|
||||
wget -O kubectl "https://dl.k8s.io/release/v1.34.1/bin/linux/amd64/kubectl"; \
|
||||
else \
|
||||
wget -O kubectl "https://dl.k8s.io/release/v1.34.1/bin/linux/arm64/kubectl"; \
|
||||
fi && \
|
||||
chmod +x kubectl && \
|
||||
mv kubectl /usr/local/bin/
|
||||
|
||||
# Устанавливаем Helm
|
||||
RUN wget https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 -O - | bash
|
||||
|
||||
# Устанавливаем Kind v0.30.0
|
||||
RUN if [ "${TARGETARCH}" = "amd64" ]; then \
|
||||
wget -O /usr/local/bin/kind "https://github.com/kubernetes-sigs/kind/releases/download/v0.30.0/kind-linux-amd64"; \
|
||||
else \
|
||||
wget -O /usr/local/bin/kind "https://github.com/kubernetes-sigs/kind/releases/download/v0.30.0/kind-linux-arm64"; \
|
||||
fi && \
|
||||
chmod +x /usr/local/bin/kind && \
|
||||
ls -lh /usr/local/bin/kind && \
|
||||
file /usr/local/bin/kind
|
||||
|
||||
# Устанавливаем Istio CLI
|
||||
RUN ARCH=$(echo ${TARGETARCH} | sed 's/amd64/x86_64/; s/arm64/aarch64/') && \
|
||||
ISTIO_VERSION=1.22.1 && \
|
||||
wget -qO- https://istio.io/downloadIstio | ISTIO_VERSION=${ISTIO_VERSION} TARGET_ARCH=${ARCH} sh - && \
|
||||
mv istio-${ISTIO_VERSION}/bin/istioctl /usr/local/bin/ && \
|
||||
rm -rf istio-${ISTIO_VERSION}
|
||||
|
||||
# Команда по умолчанию
|
||||
CMD ["sleep", "infinity"]
|
||||
54
app/alembic/dockerfiles/redos/Dockerfile
Normal file
54
app/alembic/dockerfiles/redos/Dockerfile
Normal file
@@ -0,0 +1,54 @@
|
||||
# RED OS с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# https://registry.red-soft.ru/ubi7/ubi/tags
|
||||
# docker search registry.red-soft.ru/ubi7/ubi
|
||||
# ВАЖНО: Базовый образ поддерживает только linux/amd64
|
||||
# Для сборки используйте: docker buildx build --platform linux/amd64
|
||||
|
||||
FROM registry.red-soft.ru/ubi7/ubi
|
||||
|
||||
# Обновляем систему
|
||||
RUN dnf update -y && dnf upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN dnf install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& dnf clean all
|
||||
|
||||
# Устанавливаем yq (автоопределение архитектуры)
|
||||
# RUN ARCH=$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/') && \
|
||||
# wget -qO /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${ARCH}" && \
|
||||
# chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker вручную для RED OS
|
||||
# RUN dnf install -y dnf-plugins-core \
|
||||
# && dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo \
|
||||
# && dnf install -y docker-ce docker-ce-cli containerd.io \
|
||||
# && dnf clean all
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
80
app/alembic/dockerfiles/redos/Dockerfile.arm64
Normal file
80
app/alembic/dockerfiles/redos/Dockerfile.arm64
Normal file
@@ -0,0 +1,80 @@
|
||||
# RedOS совместимый образ для ARM64
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
# Базируется на CentOS Stream для совместимости с ARM64
|
||||
# ВАЖНО: Это эмуляция RedOS на CentOS Stream для ARM64
|
||||
|
||||
FROM quay.io/centos/centos:stream9
|
||||
|
||||
# Устанавливаем переменные окружения
|
||||
ENV LANG=ru_RU.UTF-8
|
||||
ENV LANGUAGE=ru_RU:ru
|
||||
ENV LC_ALL=ru_RU.UTF-8
|
||||
|
||||
# Обновляем систему
|
||||
RUN dnf update -y && dnf upgrade -y
|
||||
|
||||
# Устанавливаем локали
|
||||
RUN dnf install -y glibc-langpack-ru glibc-locale-source && \
|
||||
localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 || true
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN dnf install -y --allowerasing \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
ca-certificates \
|
||||
gnupg \
|
||||
&& dnf clean all
|
||||
|
||||
# Устанавливаем yq (автоопределение архитектуры)
|
||||
RUN ARCH=$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/') && \
|
||||
wget -qO /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${ARCH}" && \
|
||||
chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker для ARM64
|
||||
RUN ARCH=$(uname -m) && \
|
||||
dnf install -y dnf-plugins-core && \
|
||||
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
|
||||
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin && \
|
||||
dnf clean all
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Создаем файлы конфигурации для эмуляции RedOS
|
||||
RUN echo "Red OS" > /etc/os-release && \
|
||||
echo "VERSION_ID=\"8.0\"" >> /etc/os-release && \
|
||||
echo "PRETTY_NAME=\"Red OS 8.0 (ARM64 Compatible)\"" >> /etc/os-release && \
|
||||
echo "ID=\"redos\"" >> /etc/os-release && \
|
||||
echo "ID_LIKE=\"rhel fedora\"" >> /etc/os-release && \
|
||||
echo "VERSION=\"8.0\"" >> /etc/os-release && \
|
||||
echo "VERSION_CODENAME=\"\"" >> /etc/os-release && \
|
||||
echo "PLATFORM_ID=\"platform:el8\"" >> /etc/os-release && \
|
||||
echo "HOME_URL=\"https://www.red-soft.ru/\"" >> /etc/os-release && \
|
||||
echo "BUG_REPORT_URL=\"https://www.red-soft.ru/support/\"" >> /etc/os-release && \
|
||||
echo "REDHAT_BUGZILLA_PRODUCT=\"Red OS\"" >> /etc/os-release && \
|
||||
echo "REDHAT_BUGZILLA_PRODUCT_VERSION=\"8.0\"" >> /etc/os-release && \
|
||||
echo "REDHAT_SUPPORT_PRODUCT=\"Red OS\"" >> /etc/os-release && \
|
||||
echo "REDHAT_SUPPORT_PRODUCT_VERSION=\"8.0\"" >> /etc/os-release
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
53
app/alembic/dockerfiles/rhel/Dockerfile
Normal file
53
app/alembic/dockerfiles/rhel/Dockerfile
Normal file
@@ -0,0 +1,53 @@
|
||||
# RHEL с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM registry.access.redhat.com/ubi8/ubi
|
||||
|
||||
# Обновляем систему
|
||||
RUN dnf update -y && dnf upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN dnf install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-devel \
|
||||
sudo \
|
||||
&& dnf clean all
|
||||
|
||||
# Устанавливаем Python 3.11+ из EPEL
|
||||
RUN dnf install -y epel-release && \
|
||||
dnf install -y python311 python311-pip python311-devel && \
|
||||
ln -sf /usr/bin/python3.11 /usr/bin/python3 && \
|
||||
ln -sf /usr/bin/pip3.11 /usr/bin/pip3
|
||||
|
||||
# Устанавливаем yq
|
||||
# RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 \
|
||||
# && chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker
|
||||
# RUN curl -fsSL https://get.docker.com | sh
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
54
app/alembic/dockerfiles/rocky/Dockerfile
Normal file
54
app/alembic/dockerfiles/rocky/Dockerfile
Normal file
@@ -0,0 +1,54 @@
|
||||
# Rocky Linux с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM rockylinux:9
|
||||
|
||||
# Обновляем систему
|
||||
RUN dnf update -y && dnf upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN dnf install -y --allowerasing \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-devel \
|
||||
sudo \
|
||||
&& dnf clean all
|
||||
|
||||
# Устанавливаем более новую версию Python через pip если нужно
|
||||
RUN python3 -m pip install --upgrade pip
|
||||
|
||||
# Устанавливаем yq (автоматически определяем архитектуру)
|
||||
# RUN ARCH=$(uname -m) && \
|
||||
# if [ "$ARCH" = "x86_64" ]; then ARCH="amd64"; elif [ "$ARCH" = "aarch64" ]; then ARCH="arm64"; fi && \
|
||||
# wget -qO /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${ARCH}" && \
|
||||
# chmod +x /usr/local/bin/yq
|
||||
|
||||
# Устанавливаем Docker
|
||||
# RUN dnf install -y dnf-plugins-core \
|
||||
# && dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo \
|
||||
# && dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
# Устанавливаем 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
56
app/alembic/dockerfiles/ubuntu20/Dockerfile
Normal file
56
app/alembic/dockerfiles/ubuntu20/Dockerfile
Normal file
@@ -0,0 +1,56 @@
|
||||
# Ubuntu 20.04 с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM ubuntu:20.04
|
||||
|
||||
# Устанавливаем переменные окружения для автоматического ответа на запросы
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем 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=$(dpkg --print-architecture) 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
56
app/alembic/dockerfiles/ubuntu22/Dockerfile
Normal file
56
app/alembic/dockerfiles/ubuntu22/Dockerfile
Normal file
@@ -0,0 +1,56 @@
|
||||
# Ubuntu 22.04 с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Устанавливаем переменные окружения для автоматического ответа на запросы
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем 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=$(dpkg --print-architecture) 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
56
app/alembic/dockerfiles/ubuntu24/Dockerfile
Normal file
56
app/alembic/dockerfiles/ubuntu24/Dockerfile
Normal file
@@ -0,0 +1,56 @@
|
||||
# Ubuntu 24.04 с systemd
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
FROM ubuntu:24.04
|
||||
|
||||
# Устанавливаем переменные окружения для автоматического ответа на запросы
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Обновляем систему
|
||||
RUN apt-get update && apt-get dist-upgrade -y
|
||||
|
||||
# Устанавливаем systemd и необходимые пакеты
|
||||
RUN apt-get install -y \
|
||||
systemd \
|
||||
systemd-sysv \
|
||||
dbus \
|
||||
curl \
|
||||
wget \
|
||||
nano \
|
||||
python3 \
|
||||
python3-pip \
|
||||
sudo \
|
||||
&& apt-get clean
|
||||
|
||||
# Устанавливаем 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=$(dpkg --print-architecture) 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
|
||||
|
||||
# Настраиваем systemd
|
||||
RUN systemctl set-default multi-user.target
|
||||
|
||||
# Настраиваем sudoers для root и пользователей
|
||||
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||
|
||||
# Создаем пользователя для Ansible
|
||||
RUN useradd -m -s /bin/bash ansible \
|
||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
|
||||
# Команда по умолчанию (система запускается от root для systemd)
|
||||
CMD ["/sbin/init"]
|
||||
Reference in New Issue
Block a user