#!/usr/bin/env bash # Pre-load the ERPNext custom image into the Coolify host Docker daemon. # Run on the Coolify server (root) BEFORE the first deploy, or after Jenkins pushes a new tag. # # Why: the custom image is ~1.2GB with large layers. Coolify deploy can fail while # `docker compose up` streams pull progress (exit 255) when pulling through Cloudflare/Traefik. # Skopeo copies from internal Forgejo (same trick as Jenkins push) — fast and reliable. # # Usage (on Coolify host): # export REGISTRY_USER=epistemophiliac # export REGISTRY_PASSWORD='' # export CUSTOM_TAG=main-26933f3 # or main # bash scripts/coolify/preload-image.sh # # Then in Coolify env: PULL_POLICY=if_not_present set -euo pipefail REGISTRY_IMAGE="${CUSTOM_IMAGE:-git.aexoradao.com/epistemophiliac/erpnext}" IMAGE_TAG="${CUSTOM_TAG:-main}" FORGEJO_HOST="${FORGEJO_HOST:-forgejo-vydgeq365afzmxe4s1d75fwv}" FORGEJO_NETWORK="${FORGEJO_NETWORK:-vydgeq365afzmxe4s1d75fwv}" SKOPEO_IMAGE="${SKOPEO_IMAGE:-quay.io/skopeo/stable:v1.17.0}" if [ -z "${REGISTRY_USER:-}" ] || [ -z "${REGISTRY_PASSWORD:-}" ]; then echo "ERROR: set REGISTRY_USER and REGISTRY_PASSWORD (Forgejo token with package read)" exit 1 fi if ! docker info >/dev/null 2>&1; then echo "ERROR: run as root on the Coolify host (docker info failed)" exit 1 fi echo "=== Preload ${REGISTRY_IMAGE}:${IMAGE_TAG} ===" echo "Source: http://${FORGEJO_HOST}:3000/epistemophiliac/erpnext:${IMAGE_TAG} (internal)" docker run --rm \ --network "${FORGEJO_NETWORK}" \ -v /var/run/docker.sock:/var/run/docker.sock \ "${SKOPEO_IMAGE}" \ copy \ "docker://${FORGEJO_HOST}:3000/epistemophiliac/erpnext:${IMAGE_TAG}" \ "docker-daemon:${REGISTRY_IMAGE}:${IMAGE_TAG}" \ --src-creds "${REGISTRY_USER}:${REGISTRY_PASSWORD}" \ --src-tls-verify=false \ --retry-times 3 if [ "${IMAGE_TAG}" != "main" ]; then docker tag "${REGISTRY_IMAGE}:${IMAGE_TAG}" "${REGISTRY_IMAGE}:main" echo "Also tagged ${REGISTRY_IMAGE}:main" fi echo "OK: ${REGISTRY_IMAGE}:${IMAGE_TAG} is on the host." echo "Set PULL_POLICY=if_not_present in Coolify, then redeploy."