51 lines
1.4 KiB
Bash
Executable File
51 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
REGISTRY="git.baked.rocks"
|
|
OWNER="vasceannie"
|
|
# Extract service names from docker-compose.yml
|
|
SERVICES=($(docker compose config --services))
|
|
|
|
# Login to registry if not already authenticated
|
|
echo "Logging in to ${REGISTRY}..."
|
|
docker login "${REGISTRY}" || {
|
|
echo "Error: Failed to login to ${REGISTRY}"
|
|
echo "Please ensure you have valid credentials"
|
|
exit 1
|
|
}
|
|
|
|
# Build all services
|
|
echo "Building all services..."
|
|
docker compose build
|
|
|
|
# Tag and push each service
|
|
for service in "${SERVICES[@]}"; do
|
|
echo "Tagging and pushing $service..."
|
|
# Get the image ID - try multiple methods
|
|
IMAGE_ID=$(docker compose images -q "$service" 2>/dev/null | head -1)
|
|
|
|
if [ -z "$IMAGE_ID" ]; then
|
|
# Fallback: find image by service name pattern
|
|
IMAGE_ID=$(docker images --format "{{.ID}}" --filter "reference=*${service}*" | head -1)
|
|
fi
|
|
|
|
if [ -z "$IMAGE_ID" ]; then
|
|
echo "Error: Could not find image ID for $service"
|
|
echo "Available images:"
|
|
docker compose images
|
|
docker images | grep -E "(${SERVICES[*]// /|})"
|
|
exit 1
|
|
fi
|
|
|
|
TARGET_IMAGE="${OWNER}/${service}:latest"
|
|
REGISTRY_IMAGE="${REGISTRY}/${TARGET_IMAGE}"
|
|
|
|
# Tag using image ID directly
|
|
docker tag "${IMAGE_ID}" "${REGISTRY_IMAGE}"
|
|
docker push "${REGISTRY_IMAGE}"
|
|
echo "$service pushed successfully"
|
|
done
|
|
|
|
echo "All services built and pushed to ${REGISTRY}"
|
|
|