mirror of
https://github.com/trycua/computer.git
synced 2025-12-21 04:49:37 -06:00
# Conflicts: # examples/pylume_examples.py # libs/python/mcp-server/scripts/start_mcp_server.sh # libs/python/pylume/README.md # libs/python/pylume/__init__.py # libs/python/pylume/pylume/__init__.py # libs/python/pylume/pylume/client.py # libs/python/pylume/pylume/exceptions.py # libs/python/pylume/pylume/models.py # libs/python/pylume/pylume/pylume.py # libs/python/pylume/pylume/server.py # libs/python/pylume/pyproject.toml # pdm.lock # pyproject.toml # scripts/build-uv.sh # scripts/build.ps1 # scripts/build.sh
117 lines
3.8 KiB
Bash
Executable File
117 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Print with color
|
|
print_info() {
|
|
echo -e "${BLUE}==> $1${NC}"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}==> $1${NC}"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}==> $1${NC}"
|
|
}
|
|
|
|
# Docker image name
|
|
IMAGE_NAME="cua-dev-image"
|
|
CONTAINER_NAME="cua-dev-container"
|
|
PLATFORM="linux/arm64"
|
|
|
|
# Detect platform based on architecture
|
|
arch=$(uname -m)
|
|
|
|
if [[ $arch == x86_64* ]]; then
|
|
PLATFORM="linux/amd64"
|
|
print_info "X64 Architecture detected, using platform: ${PLATFORM}"
|
|
elif [[ $arch == i*86 ]]; then
|
|
PLATFORM="linux/386"
|
|
print_info "X32 Architecture detected, using platform: ${PLATFORM}"
|
|
elif [[ $arch == arm* ]] || [[ $arch == aarch64 ]]; then
|
|
PLATFORM="linux/arm64"
|
|
print_info "ARM Architecture detected, using platform: ${PLATFORM}"
|
|
else
|
|
# Fallback to amd64 for unknown architectures
|
|
PLATFORM="linux/amd64"
|
|
print_info "Unknown architecture ($arch), defaulting to platform: ${PLATFORM}"
|
|
fi
|
|
|
|
# Environment variables
|
|
PYTHONPATH="/app/libs/python/core:/app/libs/python/computer:/app/libs/python/agent:/app/libs/python/som:/app/libs/python/computer-server:/app/libs/python/mcp-server"
|
|
|
|
# Check if Docker is installed
|
|
if ! command -v docker &> /dev/null; then
|
|
print_error "Docker is not installed. Please install Docker first."
|
|
exit 1
|
|
fi
|
|
|
|
# Command options
|
|
case "$1" in
|
|
build)
|
|
print_info "Building the development Docker image..."
|
|
print_info "This will install all dependencies but won't include source code"
|
|
docker build -f Dockerfile --platform=${PLATFORM} -t ${IMAGE_NAME} .
|
|
print_success "Development Docker image built successfully!"
|
|
;;
|
|
|
|
run)
|
|
# Check for interactive flag
|
|
if [ "$2" == "--interactive" ]; then
|
|
print_info "Running the development Docker container with interactive shell..."
|
|
print_info "Mounting source code from host"
|
|
print_info "Connecting to host.docker.internal:7777"
|
|
|
|
docker run -it --rm \
|
|
--platform=${PLATFORM} \
|
|
--name ${CONTAINER_NAME} \
|
|
-v "$(pwd):/app" \
|
|
-e PYTHONPATH=${PYTHONPATH} \
|
|
-e DISPLAY=${DISPLAY:-:0} \
|
|
-e PYLUME_HOST="host.docker.internal" \
|
|
-p 7860:7860 \
|
|
${IMAGE_NAME} bash
|
|
else
|
|
# Run the specified example
|
|
if [ -z "$2" ]; then
|
|
print_error "Please specify an example file, e.g., ./run-docker-dev.sh run computer_examples.py"
|
|
exit 1
|
|
fi
|
|
print_info "Running example: $2"
|
|
print_info "Connecting to host.docker.internal:7777"
|
|
|
|
docker run -it --rm \
|
|
--platform=${PLATFORM} \
|
|
--name ${CONTAINER_NAME} \
|
|
-v "$(pwd):/app" \
|
|
-e PYTHONPATH=${PYTHONPATH} \
|
|
-e DISPLAY=${DISPLAY:-:0} \
|
|
-e PYLUME_HOST="host.docker.internal" \
|
|
-p 7860:7860 \
|
|
${IMAGE_NAME} python "/app/examples/$2"
|
|
fi
|
|
;;
|
|
|
|
stop)
|
|
print_info "Stopping any running containers..."
|
|
docker stop ${CONTAINER_NAME} 2>/dev/null || true
|
|
print_success "Done!"
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 {build|run [--interactive] [filename]|stop}"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " build Build the development Docker image with dependencies"
|
|
echo " run [example_filename] Run the specified example file in the container"
|
|
echo " run --interactive Run the container with mounted code and get an interactive shell"
|
|
echo " stop Stop the container"
|
|
exit 1
|
|
esac
|
|
|
|
exit 0 |