Compare commits

...

1 Commits

Author SHA1 Message Date
Mark Backman
2ba3996258 Make the temporary build script more flexible for cross-architecture builds 2025-08-26 09:05:21 -04:00
2 changed files with 96 additions and 10 deletions

View File

@@ -83,7 +83,7 @@ Transform your local bot into a production-ready service. Pipecat Cloud handles
3. Set up Docker for building your bot image:
- **Install [Docker](https://www.docker.com/)** on your system
- **Install [Docker Desktop](https://www.docker.com/)** on your system
- **Create a [Docker Hub](https://hub.docker.com/) account**
- **Login to Docker Hub:**

View File

@@ -5,15 +5,101 @@ VERSION="0.1"
DOCKER_USERNAME="your_username"
AGENT_NAME="quickstart"
# Build the Docker image with the correct context
echo "Building Docker image..."
docker build --platform=linux/arm64 -t "$DOCKER_USERNAME/$AGENT_NAME:$VERSION" -t "$DOCKER_USERNAME/$AGENT_NAME:latest" .
# 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
# Push the Docker images
echo "Pushing Docker image $DOCKER_USERNAME/$AGENT_NAME:$VERSION..."
docker push "$DOCKER_USERNAME/$AGENT_NAME:$VERSION"
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 "Pushing Docker image $DOCKER_USERNAME/$AGENT_NAME:latest..."
docker push "$DOCKER_USERNAME/$AGENT_NAME:latest"
echo "✅ Docker buildx is available"
}
echo "Successfully built and pushed $DOCKER_USERNAME/$AGENT_NAME:$VERSION and $DOCKER_USERNAME/$AGENT_NAME:latest"
# 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 "$@"