Настройка деплоя сайта на Google Cloud (GCE/Cloud Run)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка деплоя сайта на Google Cloud (GCE/Cloud Run)
Сложная
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка деплоя сайта на Google Cloud (GCE/Cloud Run)

Google Cloud предлагает два основных пути для веб-приложений: Compute Engine (GCE) — виртуальные машины, Cloud Run — serverless-контейнеры с автоскейлингом до нуля.

Cloud Run — приоритетный вариант

Cloud Run запускает Docker-контейнер и масштабирует его от 0 до N экземпляров. Платите только за фактическое время обработки запросов.

# Настройка проекта
gcloud config set project myproject-123456

# Сборка и деплой одной командой
gcloud run deploy myapp \
    --source . \
    --region europe-west3 \
    --platform managed \
    --allow-unauthenticated \
    --port 8080 \
    --min-instances 1 \         # не масштабировать до нуля (избежать cold start)
    --max-instances 10 \
    --memory 512Mi \
    --cpu 1 \
    --set-env-vars APP_ENV=production \
    --set-secrets DB_PASSWORD=db-password:latest

Dockerfile для Cloud Run

FROM php:8.3-fpm-alpine

WORKDIR /app

COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader --no-scripts

COPY . .
RUN php artisan config:cache && php artisan route:cache

# Cloud Run требует PORT из переменной окружения
ENV PORT=8080
EXPOSE 8080

CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8080"]

Terraform для Cloud Run

# main.tf
resource "google_cloud_run_v2_service" "myapp" {
  name     = "myapp"
  location = "europe-west3"

  template {
    scaling {
      min_instance_count = 1
      max_instance_count = 20
    }

    containers {
      image = "gcr.io/myproject/myapp:latest"

      resources {
        limits = {
          cpu    = "1"
          memory = "512Mi"
        }
        cpu_idle = false
      }

      env {
        name  = "APP_ENV"
        value = "production"
      }

      env {
        name = "DB_PASSWORD"
        value_source {
          secret_key_ref {
            secret  = google_secret_manager_secret.db_password.secret_id
            version = "latest"
          }
        }
      }

      startup_probe {
        http_get { path = "/health" }
        initial_delay_seconds = 5
        timeout_seconds       = 3
      }
    }
  }
}

resource "google_cloud_run_v2_service_iam_member" "noauth" {
  name   = google_cloud_run_v2_service.myapp.name
  role   = "roles/run.invoker"
  member = "allUsers"
}

Google Compute Engine (GCE)

# Создать VM
gcloud compute instances create myapp-vm \
    --machine-type=e2-medium \
    --zone=europe-west3-a \
    --image-family=ubuntu-2204-lts \
    --image-project=ubuntu-os-cloud \
    --tags=http-server,https-server \
    --metadata-from-file startup-script=startup.sh

# Firewall rules
gcloud compute firewall-rules create allow-http \
    --allow tcp:80,tcp:443 \
    --target-tags=http-server

Cloud Build CI/CD

# cloudbuild.yaml
steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/myapp:$COMMIT_SHA', '.']

  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/$PROJECT_ID/myapp:$COMMIT_SHA']

  - name: 'gcr.io/cloud-builders/gcloud'
    args:
      - run
      - deploy
      - myapp
      - '--image=gcr.io/$PROJECT_ID/myapp:$COMMIT_SHA'
      - '--region=europe-west3'
      - '--platform=managed'

timeout: '900s'

GitHub Actions + Google Cloud

- uses: google-github-actions/auth@v2
  with:
    credentials_json: ${{ secrets.GCP_CREDENTIALS }}

- uses: google-github-actions/setup-gcloud@v2

- name: Build and push
  run: |
    gcloud builds submit --tag gcr.io/$PROJECT_ID/myapp:$GITHUB_SHA

- name: Deploy to Cloud Run
  run: |
    gcloud run deploy myapp \
      --image gcr.io/$PROJECT_ID/myapp:$GITHUB_SHA \
      --region europe-west3 \
      --platform managed

Статический сайт: GCS + Cloud CDN

# Создать бакет
gsutil mb -l EUROPE-WEST3 gs://myapp-static

# Разрешить публичный доступ
gsutil iam ch allUsers:objectViewer gs://myapp-static

# Загрузить
gsutil -m rsync -r -d ./dist gs://myapp-static

# Настроить как website
gsutil web set -m index.html -e index.html gs://myapp-static

Срок реализации

Вариант Срок
Cloud Run (первый деплой) 1–2 дня
Cloud Run + Terraform 3–4 дня
GCE с Load Balancer 4–6 дней
GCS static + Cloud CDN 1 день