Screen-Shot-2020-07-15-at-3.24.21-PM

Automatically deploy to Cloud Run services using Cloud Build

Trong bài này, chúng ta sẽ sử dụng Cloud Build để containerize và deploy to Cloud Run.

Trước tiên chúng ta tạo Git repository và add 3 file bên dưới vào:
Dockerfile:

FROM python:3.7-slim

ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

RUN pip install Flask gunicorn

CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 app:app

app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

cloudbuild.yaml

 steps:
 # Build the container image
 - name: 'gcr.io/cloud-builders/docker'
   args: ['build', '-t', 'gcr.io/$PROJECT_ID/hello-cloud-run:$COMMIT_SHA', '.']
 # Push the container image to Container Registry
 - name: 'gcr.io/cloud-builders/docker'
   args: ['push', 'gcr.io/$PROJECT_ID/hello-cloud-run:$COMMIT_SHA']
 # Deploy container image to Cloud Run
 - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
   entrypoint: gcloud
   args:
   - 'run'
   - 'deploy'
   - 'hello-cloud-run'
   - '--image'
   - 'gcr.io/$PROJECT_ID/hello-cloud-run:$COMMIT_SHA'
   - '--region'
   - 'asia-east1'
   - '--platform'
   - 'managed'
   - '--allow-unauthenticated'
  • hello-cloud-run: Đây là service name của Cloud Run. Có thể thay đổi tuỳ ý.
  • asia-east1: Đây là region. Có thể thay đổi region sao cho phù hợp với vị trí bạn muốn.
  • --allow-unauthenticated: Nếu sử dụng param này, website của bạn sẽ public. Trường hợp không muốn public, muốn Auth thì không dùng param này.

Tiếp theo chúng ta sẽ tạo triggers cho Cloud Build, đe khi có commit nó sẽ pull source, build và deploy to Cloud Run.
Để làm đc việc đó, chúng ta cần connect git repository vào Cloud Build.
Vào đây để connect như hình dưới:

Tạo triggers:

Set permissions cho Cloud Build.

OK, Giờ là lúc kiểm tra kết quả.
Thử edit file app.py thành như dưới:

return "Hello Cloud Ace!"

Push thay đổi lên GitHub

Tại Cloud Build -> History sẽ có Job đang running

Tại Container Registry sẽ có image mà Cloud Build vừa tạo.

Tại Cloud Run sẽ có service mà Cloud Build vừa deploy.

Thử truy cập

Comments are closed.