Sıfırdan: Google Cloud Run'da Konteyner Uygulaması Yayınlama

Google Cloud Run, sunucusuz bir platform. Konteyner yüklüyorsun, çalışıyor. Ölçekleme, altyapı yönetimi, hepsi GCP'nin sorunu. Basit bir Flask uygulamasıyla başlayalım.

İlk olarak yerel makinende Docker ve gcloud CLI kurulu olmalı. Sonra bir Python uygulaması yazıyorsun. Cloud Run, HTTP istekleri bekliyor; port 8080'de dinlemelisin.

1# app.py
2from flask import Flask
3import os
4
5app = Flask(__name__)
6
7@app.route('/')
8def hello():
9return 'Merhaba Cloud Run!'
10
11if __name__ == '__main__':
12port = int(os.environ.get('PORT', 8080))
13app.run(host='0.0.0.0', port=port, debug=False)

Bu dosya yanına requirements.txt ekle:

1Flask==2.3.0
2Werkzeug==2.3.0

Şimdi Dockerfile. Cloud Run, OCI uyumlu konteyner bekliyor:

1FROM python:3.11-slim
2
3WORKDIR /app
4COPY requirements.txt.
5RUN pip install -r requirements.txt
6
7COPY app.py.
8
9CMD ["python", "app.py"]

Konteynerini yerel olarak test et:

1docker build -t cloud-run-app.
2docker run -p 8080:8080 cloud-run-app

Tarayıcıda http://localhost:8080 açınca "Merhaba Cloud Run!" görmelisin.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Artık GCP'ye yüklüyorsun. Proje ID'ni ayarla:

1gcloud config set project PROJE_ID

Konteynerini Artifact Registry'ye (GCP'nin image deposu) yükle:

1gcloud builds submit --tag europe-west1-docker.pkg.dev/PROJE_ID/cloud-run-repo/cloud-run-app

Sonra Cloud Run'da dağıt:

[kod]
gcloud run deploy cloud-run-app \
--image europe-west1-docker.pkg.dev/PROJE_ID/cloud-run-repo/cloud-run-app \
--platform managed \
--region europe-west1 \
--allow-unauthenticated
[/cod]

Beklentili çıktı: Bir URL (mesela https://cloud-run-app-xxxxx-ew.a.run.app). O URL'ye git, "Merhaba Cloud Run!" yazısını gör.

Sık hata: PORT değişkenini okumamak. Cloud Run, 8080 portuna trafik gönderiyor; uygulanın bunu dinlemesi şart. Ayrıca requirements.txt eksikse build başarısız olur. İmajı yüklemeden önce yerel test et; zaman kazandırır.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz