fix: агрессивная очистка Docker-образов при деплое
All checks were successful
CI/CD Pipeline / deploy (push) Successful in 6s
CI/CD Pipeline / docker (push) Successful in 42s

- Сохраняется ID старого образа и удаляется после pull нового
- Добавлена очистка dangling-образов, неиспользуемых образов проекта и build-кеша
- Убрана остановка старого контейнера frontend-style-guide
This commit is contained in:
2026-03-29 07:22:07 +03:00
parent 853d8a081c
commit af7c07396a

View File

@@ -78,20 +78,27 @@ jobs:
# Логин в реестр
echo '${{ secrets.CR_TOKEN }}' | docker login ${{ env.DOCKER_REGISTRY }} -u '${{ secrets.CR_USER }}' --password-stdin
# Скачать образ
docker pull "$IMAGE"
# Сохранить ID текущего образа до pull
OLD_IMAGE_ID=$(docker images -q "$IMAGE" 2>/dev/null || true)
# Остановить старый контейнер (если переименован)
docker stop "frontend-style-guide" 2>/dev/null || true
docker rm "frontend-style-guide" 2>/dev/null || true
# Скачать новый образ
docker pull "$IMAGE"
# Перезапустить контейнер
docker stop "$CONTAINER" 2>/dev/null || true
docker rm "$CONTAINER" 2>/dev/null || true
docker run -d --name "$CONTAINER" --network web --restart unless-stopped "$IMAGE"
# Очистка старых образов
# Удалить старый образ если он отличается от нового
NEW_IMAGE_ID=$(docker images -q "$IMAGE")
if [ -n "$OLD_IMAGE_ID" ] && [ "$OLD_IMAGE_ID" != "$NEW_IMAGE_ID" ]; then
docker rmi "$OLD_IMAGE_ID" 2>/dev/null || true
fi
# Очистка: dangling-образы, неиспользуемые volumes, build-кеш
docker image prune -af --filter "label=org.opencontainers.image.title=$CONTAINER"
docker image prune -f
docker builder prune -f 2>/dev/null || true
# Статус
docker ps --filter "name=$CONTAINER"