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 echo '${{ secrets.CR_TOKEN }}' | docker login ${{ env.DOCKER_REGISTRY }} -u '${{ secrets.CR_USER }}' --password-stdin
# Скачать образ # Сохранить ID текущего образа до pull
docker pull "$IMAGE" OLD_IMAGE_ID=$(docker images -q "$IMAGE" 2>/dev/null || true)
# Остановить старый контейнер (если переименован) # Скачать новый образ
docker stop "frontend-style-guide" 2>/dev/null || true docker pull "$IMAGE"
docker rm "frontend-style-guide" 2>/dev/null || true
# Перезапустить контейнер # Перезапустить контейнер
docker stop "$CONTAINER" 2>/dev/null || true docker stop "$CONTAINER" 2>/dev/null || true
docker rm "$CONTAINER" 2>/dev/null || true docker rm "$CONTAINER" 2>/dev/null || true
docker run -d --name "$CONTAINER" --network web --restart unless-stopped "$IMAGE" 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 image prune -f
docker builder prune -f 2>/dev/null || true
# Статус # Статус
docker ps --filter "name=$CONTAINER" docker ps --filter "name=$CONTAINER"