Behebe DNS-Timeouts und Image-Pull-Probleme
- Konfiguriere Google DNS Server (8.8.8.8, 8.8.4.4) für zuverlässigere Auflösung - Füge intelligente Erkennung vorhandener Docker-Images hinzu - Aktualisiere Dockerfile automatisch, um verfügbare Base-Images zu nutzen - Verwende generischere Image-Tags (node:alpine, python:slim) als Standard - Implementiere Fallback mit mehreren alternativen Image-Versionen 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
76a4299eb0
commit
b65478ed57
@ -1,4 +1,4 @@
|
||||
FROM python:3-slim
|
||||
FROM python:slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
@ -356,11 +356,55 @@ fi
|
||||
|
||||
# Prüfen, ob erforderliche Basis-Images lokal verfügbar sind
|
||||
if ! docker image inspect python:3-slim &>/dev/null; then
|
||||
log "${YELLOW}Basis-Image wird gedownloaded, dies kann einige Zeit dauern...${NC}"
|
||||
if ! docker pull python:3-slim; then
|
||||
error_log "Konnte Basis-Image nicht herunterladen."
|
||||
log "Prüfen Sie Ihre Internetverbindung oder verwenden Sie ein bereits vorhandenes Image."
|
||||
exit 1
|
||||
log "${YELLOW}Prüfe und setze DNS-Server für Docker...${NC}"
|
||||
|
||||
# DNS-Einstellungen prüfen und anpassen
|
||||
if [ -f /etc/docker/daemon.json ]; then
|
||||
log "Bestehende Docker-Konfiguration gefunden."
|
||||
else
|
||||
log "Erstelle Docker-Konfiguration mit Google DNS..."
|
||||
sudo mkdir -p /etc/docker
|
||||
echo '{
|
||||
"dns": ["8.8.8.8", "8.8.4.4"]
|
||||
}' | sudo tee /etc/docker/daemon.json > /dev/null
|
||||
|
||||
# Docker neu starten, damit die Änderungen wirksam werden
|
||||
if command -v systemctl &>/dev/null; then
|
||||
sudo systemctl restart docker
|
||||
sleep 5
|
||||
elif command -v service &>/dev/null; then
|
||||
sudo service docker restart
|
||||
sleep 5
|
||||
fi
|
||||
fi
|
||||
|
||||
# Versuche Image explizit mit anderen Tags herunterzuladen
|
||||
log "${YELLOW}Versuche lokal vorhandene Python-Version zu finden...${NC}"
|
||||
|
||||
# Suche nach allen verfügbaren Python-Images
|
||||
PYTHON_IMAGES=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep "python:")
|
||||
|
||||
if [ -n "$PYTHON_IMAGES" ]; then
|
||||
log "Gefundene Python-Images: $PYTHON_IMAGES"
|
||||
# Verwende das erste gefundene Python-Image
|
||||
FIRST_PYTHON=$(echo "$PYTHON_IMAGES" | head -n 1)
|
||||
log "${GREEN}Verwende vorhandenes Python-Image: $FIRST_PYTHON${NC}"
|
||||
|
||||
# Aktualisiere den Dockerfile
|
||||
sed -i "s|FROM python:3-slim|FROM $FIRST_PYTHON|g" Dockerfile
|
||||
log "Dockerfile aktualisiert, um lokales Image zu verwenden."
|
||||
else
|
||||
# Versuche unterschiedliche Python-Versionen
|
||||
for PYTHON_VERSION in "python:3.11-slim" "python:3.10-slim" "python:3.9-slim" "python:slim" "python:alpine"; do
|
||||
log "Versuche $PYTHON_VERSION zu laden..."
|
||||
if docker pull $PYTHON_VERSION; then
|
||||
log "${GREEN}Erfolgreich $PYTHON_VERSION heruntergeladen${NC}"
|
||||
# Aktualisiere den Dockerfile
|
||||
sed -i "s|FROM python:3-slim|FROM $PYTHON_VERSION|g" Dockerfile
|
||||
log "Dockerfile aktualisiert, um $PYTHON_VERSION zu verwenden."
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -363,11 +363,55 @@ fi
|
||||
|
||||
# Prüfen, ob erforderliche Basis-Images lokal verfügbar sind
|
||||
if ! docker image inspect node:lts-alpine &>/dev/null; then
|
||||
log "${YELLOW}Basis-Image wird gedownloaded, dies kann einige Zeit dauern...${NC}"
|
||||
if ! docker pull node:lts-alpine; then
|
||||
error_log "Konnte Basis-Image nicht herunterladen."
|
||||
log "Prüfen Sie Ihre Internetverbindung oder verwenden Sie ein bereits vorhandenes Image."
|
||||
exit 1
|
||||
log "${YELLOW}Prüfe und setze DNS-Server für Docker...${NC}"
|
||||
|
||||
# DNS-Einstellungen prüfen und anpassen
|
||||
if [ -f /etc/docker/daemon.json ]; then
|
||||
log "Bestehende Docker-Konfiguration gefunden."
|
||||
else
|
||||
log "Erstelle Docker-Konfiguration mit Google DNS..."
|
||||
sudo mkdir -p /etc/docker
|
||||
echo '{
|
||||
"dns": ["8.8.8.8", "8.8.4.4"]
|
||||
}' | sudo tee /etc/docker/daemon.json > /dev/null
|
||||
|
||||
# Docker neu starten, damit die Änderungen wirksam werden
|
||||
if command -v systemctl &>/dev/null; then
|
||||
sudo systemctl restart docker
|
||||
sleep 5
|
||||
elif command -v service &>/dev/null; then
|
||||
sudo service docker restart
|
||||
sleep 5
|
||||
fi
|
||||
fi
|
||||
|
||||
# Versuche Image explizit mit anderen Tags herunterzuladen
|
||||
log "${YELLOW}Versuche lokal vorhandene Node-Version zu finden...${NC}"
|
||||
|
||||
# Suche nach allen verfügbaren Node-Images
|
||||
NODE_IMAGES=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep "node:")
|
||||
|
||||
if [ -n "$NODE_IMAGES" ]; then
|
||||
log "Gefundene Node-Images: $NODE_IMAGES"
|
||||
# Verwende das erste gefundene Node-Image
|
||||
FIRST_NODE=$(echo "$NODE_IMAGES" | head -n 1)
|
||||
log "${GREEN}Verwende vorhandenes Node-Image: $FIRST_NODE${NC}"
|
||||
|
||||
# Aktualisiere den Dockerfile
|
||||
sed -i "s|FROM node:lts-alpine|FROM $FIRST_NODE|g" Dockerfile
|
||||
log "Dockerfile aktualisiert, um lokales Image zu verwenden."
|
||||
else
|
||||
# Versuche unterschiedliche Node-Versionen
|
||||
for NODE_VERSION in "node:20-alpine" "node:18-alpine" "node:16-alpine" "node:alpine" "node:slim"; do
|
||||
log "Versuche $NODE_VERSION zu laden..."
|
||||
if docker pull $NODE_VERSION; then
|
||||
log "${GREEN}Erfolgreich $NODE_VERSION heruntergeladen${NC}"
|
||||
# Aktualisiere den Dockerfile
|
||||
sed -i "s|FROM node:lts-alpine|FROM $NODE_VERSION|g" Dockerfile
|
||||
log "Dockerfile aktualisiert, um $NODE_VERSION zu verwenden."
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM node:lts-alpine
|
||||
FROM node:alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user