fix sh
This commit is contained in:
parent
80c489a5bd
commit
1661dea57c
18
README.md
18
README.md
|
|
@ -162,6 +162,24 @@ curl http://localhost:15100/api/v3/node/peers | jq
|
||||||
|
|
||||||
### Проблемы и решения:
|
### Проблемы и решения:
|
||||||
|
|
||||||
|
**Ошибка сборки Converter (TLS handshake timeout):**
|
||||||
|
```bash
|
||||||
|
# Автоматические решения скрипта:
|
||||||
|
# - 3 попытки сборки с увеличенными таймаутами
|
||||||
|
# - Очистка Docker cache между попытками
|
||||||
|
# - Перезапуск Docker daemon при повторных ошибках
|
||||||
|
# - Установка продолжится без converter если сборка не удалась
|
||||||
|
|
||||||
|
# Ручная сборка converter после установки:
|
||||||
|
cd /opt/my-network/my-network/converter-module/converter
|
||||||
|
docker build --network=host --build-arg HTTP_TIMEOUT=300 -t my-network-converter:latest .
|
||||||
|
|
||||||
|
# Проверка и сброс Docker настроек:
|
||||||
|
sudo systemctl restart docker
|
||||||
|
docker info | grep -i registry
|
||||||
|
docker system prune -f
|
||||||
|
```
|
||||||
|
|
||||||
**Ошибка клонирования репозиториев:**
|
**Ошибка клонирования репозиториев:**
|
||||||
```bash
|
```bash
|
||||||
# Проверьте доступность git.projscale.dev
|
# Проверьте доступность git.projscale.dev
|
||||||
|
|
|
||||||
118
start.sh
118
start.sh
|
|
@ -911,6 +911,58 @@ setup_project() {
|
||||||
log_success "Проект настроен в $PROJECT_DIR/my-network"
|
log_success "Проект настроен в $PROJECT_DIR/my-network"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Функция для проверки доступности Docker registry
|
||||||
|
check_docker_registry() {
|
||||||
|
log_info "Проверка доступности Docker registry..."
|
||||||
|
|
||||||
|
# Проверяем доступность registry.docker.io
|
||||||
|
if timeout 30 curl -s --connect-timeout 10 https://registry.docker.io/v2/ >/dev/null 2>&1; then
|
||||||
|
log_success "Docker registry доступен"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
log_warn "Docker registry недоступен или медленно отвечает"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для настройки Docker daemon timeout
|
||||||
|
configure_docker_timeout() {
|
||||||
|
log_info "Настройка Docker timeout для сетевых операций..."
|
||||||
|
|
||||||
|
# Создаем или обновляем Docker daemon config
|
||||||
|
local docker_config="/etc/docker/daemon.json"
|
||||||
|
local temp_config="/tmp/daemon.json.tmp"
|
||||||
|
|
||||||
|
if [ -f "$docker_config" ]; then
|
||||||
|
# Читаем существующий конфиг
|
||||||
|
cp "$docker_config" "$temp_config"
|
||||||
|
else
|
||||||
|
# Создаем новый конфиг
|
||||||
|
echo '{}' > "$temp_config"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Добавляем настройки timeout с помощью jq если доступен
|
||||||
|
if command -v jq >/dev/null 2>&1; then
|
||||||
|
jq '. + {
|
||||||
|
"registry-mirrors": [],
|
||||||
|
"insecure-registries": [],
|
||||||
|
"max-concurrent-downloads": 3,
|
||||||
|
"max-concurrent-uploads": 3,
|
||||||
|
"default-runtime": "runc"
|
||||||
|
}' "$temp_config" > "${temp_config}.new" && mv "${temp_config}.new" "$temp_config"
|
||||||
|
|
||||||
|
if sudo cp "$temp_config" "$docker_config" 2>/dev/null; then
|
||||||
|
log_info "Docker daemon конфигурация обновлена"
|
||||||
|
# Перезапускаем Docker только если это безопасно
|
||||||
|
if ! docker ps >/dev/null 2>&1 || [ "$(docker ps -q | wc -l)" -eq 0 ]; then
|
||||||
|
sudo systemctl reload docker 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_config" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
# Сборка converter образа
|
# Сборка converter образа
|
||||||
build_converter_image() {
|
build_converter_image() {
|
||||||
log_info "🔧 Сборка converter образа из converter-module..."
|
log_info "🔧 Сборка converter образа из converter-module..."
|
||||||
|
|
@ -934,13 +986,67 @@ build_converter_image() {
|
||||||
# Переходим в папку converter для сборки
|
# Переходим в папку converter для сборки
|
||||||
cd converter
|
cd converter
|
||||||
|
|
||||||
# Сборка converter образа из оригинального репозитория
|
# Настраиваем Docker timeout
|
||||||
|
configure_docker_timeout
|
||||||
|
|
||||||
|
# Проверяем доступность registry
|
||||||
|
if ! check_docker_registry; then
|
||||||
|
log_warn "Docker registry недоступен, пробуем продолжить с увеличенным timeout"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Сборка converter образа из оригинального репозитория с retry логикой
|
||||||
log_info "Сборка Docker образа для converter..."
|
log_info "Сборка Docker образа для converter..."
|
||||||
if docker build -t my-network-converter:latest . ; then
|
|
||||||
log_success "Converter образ собран: my-network-converter:latest"
|
# Попытки сборки с retry
|
||||||
else
|
local max_attempts=3
|
||||||
log_error "Ошибка сборки converter образа"
|
local attempt=1
|
||||||
return 1
|
local success=false
|
||||||
|
|
||||||
|
while [ $attempt -le $max_attempts ] && [ "$success" = false ]; do
|
||||||
|
log_info "Попытка сборки $attempt из $max_attempts..."
|
||||||
|
|
||||||
|
# Сборка с увеличенными таймаутами и дополнительными параметрами
|
||||||
|
if docker build \
|
||||||
|
--network=host \
|
||||||
|
--build-arg BUILDKIT_PROGRESS=plain \
|
||||||
|
--build-arg HTTP_TIMEOUT=300 \
|
||||||
|
--build-arg HTTPS_TIMEOUT=300 \
|
||||||
|
-t my-network-converter:latest . ; then
|
||||||
|
log_success "Converter образ собран: my-network-converter:latest"
|
||||||
|
success=true
|
||||||
|
else
|
||||||
|
log_warn "Попытка $attempt неудачна"
|
||||||
|
|
||||||
|
if [ $attempt -lt $max_attempts ]; then
|
||||||
|
log_info "Ожидание 15 секунд перед следующей попыткой..."
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
# Очистка Docker build cache и системы при неудачной попытке
|
||||||
|
log_info "Очистка Docker cache..."
|
||||||
|
docker builder prune -f >/dev/null 2>&1 || true
|
||||||
|
docker system prune -f >/dev/null 2>&1 || true
|
||||||
|
|
||||||
|
# Попытка сброса сетевых настроек Docker
|
||||||
|
if [ $attempt -eq 2 ]; then
|
||||||
|
log_info "Перезапуск Docker daemon для сброса сетевых настроек..."
|
||||||
|
systemctl restart docker >/dev/null 2>&1 || true
|
||||||
|
sleep 10
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
attempt=$((attempt + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$success" = false ]; then
|
||||||
|
log_error "Не удалось собрать converter образ после $max_attempts попыток"
|
||||||
|
log_warn "Возможные причины:"
|
||||||
|
log_warn "1. Проблемы с подключением к Docker Hub"
|
||||||
|
log_warn "2. Сетевые проблемы на сервере"
|
||||||
|
log_warn "3. Временные проблемы Docker Registry"
|
||||||
|
log_info "Установка продолжится без converter образа"
|
||||||
|
log_info "Converter можно собрать позже командой:"
|
||||||
|
log_info "cd $PROJECT_DIR/my-network/converter-module/converter && docker build -t my-network-converter:latest ."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd "$PROJECT_DIR/my-network"
|
cd "$PROJECT_DIR/my-network"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue