chore: Optimize Dockerfile for improved build performance and update Gitea workflows with Docker Buildx support
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
# CI/CD Troubleshooting Guide
|
||||
|
||||
## Проблемы со сборкой Docker
|
||||
|
||||
### 1. Сборка зависает на npm install
|
||||
|
||||
**Симптомы:**
|
||||
- CI зависает на этапе `RUN npm install`
|
||||
- Время сборки превышает 20 минут
|
||||
- Ошибки сетевого подключения
|
||||
|
||||
**Решения:**
|
||||
|
||||
#### A. Использовать оптимизированный Dockerfile
|
||||
```bash
|
||||
# Основной оптимизированный
|
||||
docker build -f Dockerfile .
|
||||
|
||||
# Быстрый с Yarn
|
||||
docker build -f Dockerfile.fast .
|
||||
```
|
||||
|
||||
#### B. Проверить сетевые настройки
|
||||
```bash
|
||||
# В CI добавить таймауты
|
||||
npm config set fetch-timeout 300000
|
||||
npm config set fetch-retry-mintimeout 20000
|
||||
npm config set fetch-retry-maxtimeout 120000
|
||||
```
|
||||
|
||||
#### C. Использовать кэширование
|
||||
```yaml
|
||||
# В CI/CD файле
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
```
|
||||
|
||||
### 2. Проблемы с Node.js версиями
|
||||
|
||||
**Симптомы:**
|
||||
- `EBADENGINE Unsupported engine`
|
||||
- Ошибки совместимости пакетов
|
||||
|
||||
**Решения:**
|
||||
- Обновить Dockerfile до Node.js 20
|
||||
- Проверить совместимость всех зависимостей
|
||||
|
||||
### 3. Проблемы с размером образа
|
||||
|
||||
**Симптомы:**
|
||||
- Слишком большой размер Docker образа
|
||||
- Медленная загрузка
|
||||
|
||||
**Решения:**
|
||||
- Использовать Alpine Linux (`node:20-alpine`)
|
||||
- Добавить `.dockerignore`
|
||||
- Использовать multi-stage builds
|
||||
|
||||
## Быстрые решения
|
||||
|
||||
### Вариант 1: Основной оптимизированный
|
||||
```bash
|
||||
# Использует обновленный Dockerfile с кэшированием
|
||||
git push origin tabler
|
||||
```
|
||||
|
||||
### Вариант 2: Быстрый с Yarn
|
||||
```bash
|
||||
# Переименовать Dockerfile.fast в Dockerfile
|
||||
mv Dockerfile.fast Dockerfile
|
||||
git add Dockerfile
|
||||
git commit -m "Switch to fast Dockerfile"
|
||||
git push origin tabler
|
||||
```
|
||||
|
||||
### Вариант 3: Локальная сборка для тестирования
|
||||
```bash
|
||||
# Собрать локально для проверки
|
||||
docker build -t test-image .
|
||||
docker run -p 3001:3001 test-image
|
||||
```
|
||||
|
||||
## Мониторинг CI/CD
|
||||
|
||||
### Проверить статус сборки
|
||||
1. Зайти в Gitea → Repository → Actions
|
||||
2. Найти последний workflow
|
||||
3. Проверить логи на каждом этапе
|
||||
|
||||
### Типичные времена сборки
|
||||
- **Оптимизированный Dockerfile**: 5-10 минут
|
||||
- **Быстрый Dockerfile**: 3-7 минут
|
||||
- **С кэшированием**: 2-5 минут (повторные сборки)
|
||||
|
||||
## Контакты для поддержки
|
||||
|
||||
Если проблемы продолжаются:
|
||||
1. Проверить логи CI/CD
|
||||
2. Попробовать локальную сборку
|
||||
3. Создать issue с логами ошибок
|
||||
Reference in New Issue
Block a user