Files
pipecat/examples/quickstart/build.sh

106 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
set -e
VERSION="0.1"
DOCKER_USERNAME="your_username"
AGENT_NAME="quickstart"
# Function to check if buildx is available
check_buildx() {
if ! command -v docker &> /dev/null; then
echo "❌ Docker is not installed or not in PATH"
echo " Please install Docker Desktop or Docker Engine"
echo " Visit: https://docs.docker.com/get-docker/"
exit 1
fi
if ! docker buildx version &> /dev/null; then
echo "❌ Docker buildx is not available"
echo " buildx is required for cross-platform ARM64 builds"
echo ""
echo "Solutions:"
echo " • Install Docker Desktop (includes buildx)"
echo " • Update Docker to version 19.03+ and enable buildx"
echo " • Run: docker buildx install"
echo ""
echo "Visit: https://docs.docker.com/buildx/working-with-buildx/"
exit 1
fi
echo "✅ Docker buildx is available"
}
# Function to ensure builder is set up
setup_builder() {
# Check if we have a builder that supports our target platform
if ! docker buildx inspect --builder default | grep -q "linux/arm64"; then
echo "Setting up multi-platform builder..."
docker buildx create --name multiarch --driver docker-container --use --bootstrap 2>/dev/null || {
echo "⚠️ Using default builder (may be slower on x86 machines)"
docker buildx use default
}
fi
}
# Main build process
main() {
echo "Building Docker image for Pipecat Cloud (ARM64)..."
# Check prerequisites
check_buildx
setup_builder
# Build the Docker image with buildx (handles cross-platform)
echo "Building $DOCKER_USERNAME/$AGENT_NAME:$VERSION..."
# Use buildx with --load to build and load into local Docker
if ! docker buildx build \
--platform=linux/arm64 \
-t "$DOCKER_USERNAME/$AGENT_NAME:$VERSION" \
-t "$DOCKER_USERNAME/$AGENT_NAME:latest" \
--load \
.; then
echo "❌ Build failed"
echo ""
echo "Common issues:"
echo " • Missing Dockerfile in current directory"
echo " • Build errors in your application code"
echo " • Insufficient disk space"
echo ""
echo "On Intel/x86 machines: builds may be slower due to emulation"
exit 1
fi
echo "✅ Build completed successfully"
# Push the Docker images
echo ""
echo "Pushing images to registry..."
echo "Pushing $DOCKER_USERNAME/$AGENT_NAME:$VERSION..."
if ! docker push "$DOCKER_USERNAME/$AGENT_NAME:$VERSION"; then
echo "❌ Push failed for version tag"
echo " Make sure you're logged in: docker login"
exit 1
fi
echo "Pushing $DOCKER_USERNAME/$AGENT_NAME:latest..."
if ! docker push "$DOCKER_USERNAME/$AGENT_NAME:latest"; then
echo "❌ Push failed for latest tag"
echo " Make sure you're logged in: docker login"
exit 1
fi
echo ""
echo "🎉 Successfully built and pushed:"
echo " 📦 $DOCKER_USERNAME/$AGENT_NAME:$VERSION"
echo " 📦 $DOCKER_USERNAME/$AGENT_NAME:latest"
echo ""
echo "Next steps:"
echo " 1. Update your pcc-deploy.toml with the image name"
echo " 2. Run: pcc deploy"
}
# Run main function
main "$@"