From c17bcd844490747c7b09d5b05cd578d57e3f9afe Mon Sep 17 00:00:00 2001 From: "Gan, Jimmy" Date: Mon, 6 Apr 2026 22:07:53 +0800 Subject: [PATCH] perf: optimize deploy-dev workflow - Skip base image pre-pull if images already exist locally - Reduce timeout from 60s to 30s for mirror pulls - Remove redundant --build flag (image already built) - Remove unnecessary cleanup steps (docker rm -f, network disconnect) - Simplify to just docker compose down before up --- .gitea/workflows/deploy-dev.yml | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/.gitea/workflows/deploy-dev.yml b/.gitea/workflows/deploy-dev.yml index dafcdba..1324d23 100644 --- a/.gitea/workflows/deploy-dev.yml +++ b/.gitea/workflows/deploy-dev.yml @@ -24,25 +24,21 @@ jobs: set -u mirror_host="127.0.0.1:5501" - if command -v curl >/dev/null 2>&1; then - if curl -fsS "http://${mirror_host}/v2/" >/dev/null; then - echo "Registry mirror is healthy at ${mirror_host}" - else - echo "Warning: registry mirror health check failed at ${mirror_host}; continuing with normal pull path" - fi - else - echo "Warning: curl is unavailable; skipping explicit mirror health check" - fi - prewarm_base_image() { image_ref="$1" + # Skip if image already exists locally + if docker image inspect "${image_ref}" >/dev/null 2>&1; then + echo "Image ${image_ref} already exists locally, skipping pre-pull" + return 0 + fi + mirror_ref="${mirror_host}/library/${image_ref}" echo "Attempting mirror pre-pull: ${mirror_ref}" - if timeout 60 docker pull "${mirror_ref}"; then + if timeout 30 docker pull "${mirror_ref}" 2>/dev/null; then docker tag "${mirror_ref}" "${image_ref}" echo "Mirror pre-pull succeeded for ${image_ref}" else - echo "Warning: mirror pre-pull failed for ${image_ref}; continuing with normal pull during build" + echo "Mirror pre-pull failed for ${image_ref}, will pull during build" fi } @@ -64,21 +60,16 @@ jobs: cd /volume1/docker/nas-dashboard - # Stop and remove any existing container - docker compose -f docker-compose.dev.yml -p nas-dashboard-dev down --remove-orphans || true - docker rm -f nas-dashboard-dev 2>/dev/null || true - - # Disconnect from networks if still connected - docker network disconnect nas-dashboard_internal nas-dashboard-dev 2>/dev/null || true - docker network disconnect gitea_gitea nas-dashboard-dev 2>/dev/null || true + # Stop existing container if running + docker compose -f docker-compose.dev.yml -p nas-dashboard-dev down || true # Ensure network exists (create only if it doesn't exist) if ! docker network inspect nas-dashboard_internal >/dev/null 2>&1; then docker network create nas-dashboard_internal fi - # Deploy with compose (without networks in compose file) - docker compose -f docker-compose.dev.yml -p nas-dashboard-dev up -d --build --pull never + # Deploy with compose (without --build since we already built the image) + docker compose -f docker-compose.dev.yml -p nas-dashboard-dev up -d --pull never # Manually connect to networks after container is created docker network connect nas-dashboard_internal nas-dashboard-dev || true