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
|
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"
|
||||||
|
|||||||
Reference in New Issue
Block a user