本文将向您展示如何使用 Cloud Run(一个完全托管的无服务器平台,用于开发和部署高度可扩展的容器化应用程序)轻松 Dockerize 并在 Google Cloud Platform 上托管 Django 应用程序。

设置 CI/CD 管道

管道的主要组成部分是:

  • GitHub

  • 云构建

  • 云跑

CI/CD 管道设置通过 Cloud Build 上定义的触发器侦听推送或合并到 GitHub 上存储库主分支的更改。

为了继续,您需要设置一个 google 帐户,然后在 GCP 上创建一个项目,google 有一篇文章如果您在该过程中需要任何帮助并了解要求和好处,可以通读拥有 GCP 帐户。

启用云 API

GCP 允许您灵活地启用适合您的开发需求的云 API,这些 API 允许与 google 服务进行通信以及它们与其他服务的集成。例如,启用 Cloud Build API 允许我们为 CI/CD 管道连接并创建构建触发器到 GitHub。

image.png

**注意:您需要设置一个结算帐户才能启用 API **

为了实现我们想要实现的目标,我们将启用:

  • 云构建 API

image.png

  • 云运行API

image.png

您可以从GitHub克隆我为本文创建的示例存储库。

应用结构

我从艰难中学到的一个重要教训是如何为 GCP 正确构建应用程序。下面的屏幕截图来自 Docker Desktop,每当我运行 docker 容器时都会弹出此错误,并且确实需要一段时间才能弄清楚我遇到的问题只是文件夹结构😒。

Gunicorn error.jpeg

下图显示 Dockerfile 必须与manage.py和 requirements.txt 文件在同一目录下,或者如果您使用 app.yaml 文件,它必须与manage 在同一目录下.py也是。

image.png

这是运行我们的应用程序的 Dockerfile:

# Use an official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.9-slim

ENV APP_HOME /app
WORKDIR $APP_HOME

RUN apt-get update \
  && apt-get upgrade \
  && apt-get install -y nginx \
  && apt-get install -y supervisor

# Install dependencies.
COPY requirements.txt .

RUN pip install -U pip && pip install -r requirements.txt

# Copy local code to the container image.
COPY . .

# Service must listen to $PORT environment variable.
# This default value facilitates local development.
ENV PORT 8000

# Setting this ensures print statements and log messages
# promptly appear in Cloud Logging.
ENV PYTHONUNBUFFERED TRUE


# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
CMD exec gunicorn --bind 0.0.0.0:$PORT --workers 3 --threads 8 --timeout 120 --preload dockerized_django_app.wsgi

创建云运行服务

现在我们已经能够准备我们的存储库并启用 Cloud Build 和 Cloud Run API。下一步是通过导航到服务页面来创建 Cloud Run 服务。

image.png

从上图中,确保您选择“从源存储库继续部署新修订”以设置连接您的 GitHub 存储库的 Cloud Build 触发器,并在推送到主分支时设置触发器以构建新映像。

验证并选择您的存储库,然后单击连接

image.png

我们在这里看到已经选择了存储库,并且触发器设置为在主分支上侦听。

image.png

在配置部分,我们指定云构建的目录以获取 Dockerfle,以及 docker 文件的名称。您还会注意到 Cloud Build 自动命名了 docker 映像。

image.png

在身份验证部分,选择“允许未经身份验证的调用”以允许通过 Internet 访问您的应用程序。

image.png

填写正确的详细信息后,我们可以单击创建设置预期触发器的设置,我们可以在 Cloud Build 服务页面的构建历史记录下监控构建。

image.png

一旦构建成功,您就可以使用从 Cloud Run 生成的 URL 访问应用程序。

image.png

太棒了,我们的docker容器在App URL上运行成功

很高兴你能走到这一步! ✌️

如果您有任何问题,请在评论部分告诉我。 😁

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐