å° Java å客é¨ç½²å° Cloud Run | AIçæåç¿»è¯
Question: å¦ä½å¨ Google Cloud ä¸ä½¿ç¨ Docker 容å¨é¨ç½² blog-server åºç¨ï¼
Answer:
以䏿¯ 2026 å¹´å° Dockerized Java/Spring Boot åºç¨ç¨åºï¼ä»å
å« Dockerfile å pom.xml çç®å½ï¼é¨ç½²å° Google Cloud æå¸¸ç¨ä¸æ¨èçæ¹æ³ãç®åæç®å䏿æµè¡çæ¹æ¡æ¯ Cloud Runï¼serverless containersï¼ã
æ¨èé项ï¼é¨ç½²å° Cloud Run (serverless, æè¯·æ±ä»è´¹)
æ¹æ¡ A â æç®åï¼ç´æ¥ä»æºç èªå¨æå»ºå¹¶é¨ç½²ï¼æ¨è大夿°å¼åè 使ç¨ï¼
ä½ çè³ä¸éè¦å¨æ¬å°æå»º Docker imageã
-
ç¡®ä¿å·²å®è£ Google Cloud SDK å¹¶å®æèº«ä»½éªè¯ï¼
gcloud auth login gcloud config set project YOUR-PROJECT-ID -
å¯ç¨å¿ è¦ç APIï¼åªéè¿è¡ä¸æ¬¡ï¼ï¼
gcloud services enable run.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com -
å¨é¡¹ç®æ ¹ç®å½ï¼
pom.xmlåDockerfileæå¨ä½ç½®ï¼è¿è¡ï¼gcloud run deploy blog-server \ --source . \ --region asia-northeast1 \ # æ us-central1, europe-west1 ç --allow-unauthenticated \ # 妿éè¦ç§ææå¡è¯·ç§»é¤æ¤é¡¹ --port 8080 \ # 妿åºç¨çå¬å ¶ä»ç«¯å£è¯·ä¿®æ¹ --memory 1Gi # å¯é â æ ¹æ®éæ±è°æ´- Cloud Run ä¼èªå¨è¯å«è¿æ¯ä¸ä¸ª Maven/Spring Boot 项ç®ï¼ä½¿ç¨ Cloud Build æå»ºå®¹å¨å¹¶è¿è¡é¨ç½²ã
- 馿¬¡é¨ç½²å¤§çº¦éè¦ 3â5 åéï¼åç»é¨ç½²é度ä¼å¿«å¾å¤ã
æ¹æ¡ B â æå¨æå»º Docker image å¹¶æ¨é
å½ä½ éè¦æ´å¤æ§å¶ææå·²æ CI/CD æµç¨æ¶ï¼æ¤æ¹æ¡é常æç¨ã
-
卿¬å°æå»ºå¹¶ææ ç¾ï¼tagï¼imageï¼
docker build -t gcr.io/YOUR-PROJECT-ID/blog-server:latest . # æè ä½¿ç¨ Artifact Registry (æ´æ°ä¸æ¨èçæ¹å¼): # docker build -t asia-northeast1-docker.pkg.dev/YOUR-PROJECT-ID/my-repo/blog-server:latest . -
æ¨é imageï¼
gcloud auth configure-docker docker push gcr.io/YOUR-PROJECT-ID/blog-server:latest # å¦æä½¿ç¨ Artifact Registry: # gcloud auth configure-docker asia-northeast1-docker.pkg.dev # docker push asia-northeast1-docker.pkg.dev/YOUR-PROJECT-ID/my-repo/blog-server:latest -
é¨ç½²å° Cloud Runï¼
gcloud run deploy blog-server \ --image gcr.io/YOUR-PROJECT-ID/blog-server:latest \ --region asia-northeast1 \ --allow-unauthenticated \ --port 8080æè ä½¿ç¨ Artifact Registry éç imageï¼
--image asia-northeast1-docker.pkg.dev/YOUR-PROJECT-ID/my-repo/blog-server:latest
é¨ç½²åçå¿«éæ£æ¥æ¸ å
- ä½ ç Dockerfile åºè¯¥æ´é²æ£ç¡®ç端å£ï¼é常æ¯
EXPOSE 8080ï¼ - åºç¨åºè¯¥çå¬
0.0.0.0ï¼è䏿¯localhostï¼ -
对äºç产ç¯å¢ï¼å»ºè®®æ·»å åæ°ï¼
--cpu 1 --memory 512Mi --concurrency 80 --max-instances 10 -
å¦æä½ ä½¿ç¨äºç¯å¢åéæ secretsï¼
--set-env-vars "SPRING_PROFILES_ACTIVE=prod,DATABASE_URL=..."
å ¶ä»å¸¸è§ç Google Cloud é项ï¼å½ Cloud Run ä¸éç¨æ¶ï¼
- Cloud Run jobs â ç¨äºæ¹å¤çæä¸æ¬¡æ§ä»»å¡
- Google Kubernetes Engine (GKE) â å½ä½ éè¦é«çº§ç½ç»åè½ãæç¶æåºç¨ï¼stateful appsï¼ææé«åº¦çå®å¶åæ¶
- Compute Engine â ä¼ ç»ç VM + Dockerï¼æ´å¤æå¨æä½ï¼
å¯¹äº blog-serverï¼Cloud Run é常å¨ä»·æ ¼ãç®æ´æ§å伸缩æ§ä¹é´æä¾äºæä½³å¹³è¡¡ã
é¨ç½²å®æåï¼ä½ å°è·å¾å¦ä¸ URLï¼
https://blog-server-abc123-uc.a.run.app
ç¥ä½ 好è¿ï¼
References:
- Deploying container images to Cloud Run
- Quickstart: Build and deploy a Java Spring Boot web app to Cloud Run
