fix: агрессивная очистка Docker-образов при деплое
- Сохраняется ID старого образа и удаляется после pull нового - Добавлена очистка dangling-образов, неиспользуемых образов проекта и build-кеша - Убрана остановка старого контейнера frontend-style-guide
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user