Summary
Развертывание AnythingMCP как безсерверного контейнера на Google Cloud Run с Cloud SQL для PostgreSQL. Масштабируемый, платный по мере использования шлюз MCP.
Почему Google Cloud Run?
Cloud Run позволяет запускать контейнеры без управления серверами. В сочетании с Cloud SQL для PostgreSQL он обеспечивает масштабируемое развертывание с оплатой по мере использования. HTTPS обрабатывается автоматически — обратный прокси не требуется.
Это более продвинутое решение, чем развертывания на основе ВМ. Ты не можешь запустить setup.sh на Cloud Run, поэтому тебе нужно вручную создать образ, загрузить его и настроить переменные окружения.
Предварительные требования
- Учетная запись GCP с включенной оплатой
- Установленный и аутентифицированный gcloud CLI
- Установленный Docker локально
gcloud config set project YOUR_PROJECT_ID
gcloud config set run/region europe-west1
gcloud services enable \
run.googleapis.com \
sqladmin.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
Настройка Cloud SQL
gcloud sql instances create anythingmcp-db \
--database-version=POSTGRES_16 \
--tier=db-f1-micro \
--region=europe-west1
gcloud sql databases create anythingmcp --instance=anythingmcp-db
gcloud sql users create amcp \
--instance=anythingmcp-db \
--password=YOUR_DB_PASSWORD
Обрати внимание на имя подключения к экземпляру (например, project-id:europe-west1:anythingmcp-db).
Создание и загрузка образа
git clone https://github.com/HelpCode-ai/anythingmcp.git
cd anythingmcp
# Вариант A: Сборка локально
docker build -t europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest .
docker push europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest
# Вариант B: Сборка с помощью Cloud Build
gcloud builds submit --tag europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest
Генерация секретов
Поскольку setup.sh не может быть запущен на Cloud Run, генерируйте секреты вручную:
JWT_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 16)
NEXTAUTH_SECRET=$(openssl rand -hex 32)
Развертывание на Cloud Run
gcloud run deploy anythingmcp \
--image=europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest \
--allow-unauthenticated \
--port=4000 \
--min-instances=1 \
--max-instances=5 \
--memory=512Mi \
--cpu=1 \
--set-env-vars="NODE_ENV=production" \
--set-env-vars="DATABASE_URL=postgresql://amcp:YOUR_DB_PASSWORD@localhost:5432/anythingmcp" \
--set-env-vars="JWT_SECRET=$JWT_SECRET" \
--set-env-vars="ENCRYPTION_KEY=$ENCRYPTION_KEY" \
--set-env-vars="NEXTAUTH_SECRET=$NEXTAUTH_SECRET" \
--set-env-vars="MCP_AUTH_MODE=oauth2" \
--add-cloudsql-instances=YOUR_PROJECT_ID:europe-west1:anythingmcp-db
--min-instances=1 предотвращает холодные старты. Прокси Cloud SQL использует Unix-сокет, поэтому localhost работает в DATABASE_URL.
Пользовательский домен (по желанию)
gcloud run domain-mappings create \
--service=anythingmcp \
--domain=mcp.example.com \
--region=europe-west1
Следуй инструкциям по DNS в выводе. SSL предоставляется автоматически.
Ограничения
- Без состояния — экземпляры Cloud Run эфемерны. Все данные должны находиться в Cloud SQL.
- Холодные старты — используй
--min-instances=1, чтобы смягчить (небольшие затраты). - Нет setup.sh — вся конфигурация осуществляется через переменные окружения во время развертывания.
- Стоимость — Cloud Run взимает плату за запросы + время vCPU. Cloud SQL имеет фиксированную ежемесячную стоимость.
Обновление
git pull
docker build -t europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest .
docker push europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest
gcloud run deploy anythingmcp \
--image=europe-west1-docker.pkg.dev/YOUR_PROJECT_ID/anythingmcp/app:latest \
--region=europe-west1
Существующие переменные окружения и подключения к Cloud SQL сохраняются при повторных развертываниях.
Это руководство помогло?