Flask是用于构建Web应用程序的开源Python微型框架。它是在Werkzeug和Jinja2上实施的。 Redis是一个充满活力的开源内存数据存储平台。开发人员将Redis用作消息经纪,数据库,流动引擎和应用程序缓存。
我们将使用redis进行缓存。缓存是一种计算技术,它使应用程序能够在随机访问存储器中临时存储数据,文件和登录详细信息。它可以更快地检索该数据,并且应用程序将加载更快。
在本教程中,我们将构建一个示例Python烧瓶应用程序,并实现REDIS进行缓存。然后,我们将使用Docker Compose将REDIS烧瓶应用程序集成。 Docker Compose是一种强大的Docker工具,用于创建和运行多座Docker应用程序。我们的应用程序将有两个容器。第一个容器将托管烧瓶应用程序。另一个容器将用于Redis缓存。 Docker Compose将以一个应用程序运行两个容器。让我们开始
先决条件
在开始之前,您必须了解Docker。您还需要在工作机器中设置以下设置:
- Vs Code用于代码编辑。
- 安装了Python。
- Docker Desktop设置。
制造样品Python烧瓶应用
我们构建了一个样本Python烧瓶应用程序,并实现了用于缓存的Redis。让我们使用终端中的以下pip
命令安装烧瓶和redis:
pip install flask
pip install redis
安装过程后,创建一个名为flask-redis
的文件夹。在文件夹中,创建一个名为app.py
的新文件。打开文件并添加以下代码段:
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
redis.incr('hits')
counter = str(redis.get('hits'),'utf-8')
return "Welcome to this webapage!, This webpage has been viewed "+counter+" time(s)"
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
Blaska应用程序将使用REDIS缓存来显示已查看网页的次数。要运行该应用程序,请cd
进入flask-redis
文件夹并运行以下python
命令:
python app.py
命令将启动并运行烧瓶Web应用程序:
您可以在http://127.0.0.1:5000/
上访问Web应用程序。
集装Redis烧瓶应用程序
我们将使用Docker组合来容器将Redis Blask应用程序进行容器化。使用Docker Compose,您可以创建一个YAML文件,以添加和配置应用程序的容器作为服务。我们的Docker撰写文件将有两种服务:烧瓶服务和REDIS服务。创建Docker撰写文件时,烧瓶服务将取决于Redis服务。
Docker组成的YAML文件还将定义容器量,端口映射,容器名称和用于构建图像的DockerFiles。docker compose将执行指定的Dockerfiles并构建Docker容器。 Dockerfile是一个文本文件,没有文件扩展名,其中包含Docker Engine用来自动构建Docker映像的所有命令和说明。
我们只需要一个Dockerfile来构建Python烧瓶应用程序图像。用于缓存的Redis容器不需要Dockerfile,因为我们将使用Docker Hub的官方Redis Docker image。官方图像也称为基础/父映像。我们将从Docker Hub中提取REDIS图像,并使用它来构建Redis容器,而无需对Docker映像进行任何更改。我们还将在flask-redis
文件夹中创建一个requirements.txt
文件。
创建一个requirements.txt
文件
此文件将包含用于创建我们应用程序的依赖,库和工具。我们的应用程序需要烧瓶来构建Web应用程序和重新用于缓存的烧瓶。在flask-redis
文件夹中,创建一个requirements.txt
文件并添加以下内容:
flask
redis
我们将在Dockerfile中添加指令,以在Python Flask应用程序Docker Image中安装这两个诽谤。让我们为Python烧瓶应用程序创建一个Dockerfile
。
Python烧瓶应用程序的Dockerfile
Docker将阅读Dockefile中写的说明并构建Docker映像。 Dockerfiles因您正在构建的应用程序而有所不同。在flask-redis
文件夹中,创建一个新的Dockerfile
并添加以下内容:
#The Flask application container will use python:3.10-alpine as the base image
FROM python:3.10-alpine
#This command will create the working directory for our Python Flask application Docker image
WORKDIR /code
#This command will copy the dependancies and libaries in the requirements.txt to the working directory
COPY requirements.txt /code
#This command will install the dependencies in the requirements.txt to the Docker image
RUN pip install -r requirements.txt --no-cache-dir
#This command will copy the files and source code required to run the application
COPY . /code
#This command will start the Python Flask application Docker container
CMD python app.py
现在我们已经创建了DockerFile,我们现在需要创建一个docker-compose.yml
文件,该文件将将应用程序的容器配置为服务。它还将添加运行两个Docker容器所需的所有配置。
创建一个docker-compose.yml
docker-compose.yml
将简单地创建和运行Docker容器的过程。使用一个命令,您可以运行docker-compose.yml
一次启动所有容器。 Docker Compose可以在应用程序开发的各个阶段进行部署。它还具有其他命令,可以帮助管理Docker容器的管理,例如查看创建服务的状态并停止运行服务。
在flask-redis
文件夹中,创建一个docker-compose.yml
文件并添加以下两个服务:
- REDIS服务
要创建
Redis
服务,请在创建的文件中添加以下代码:
services:
redis:
image: redislabs/redismod
container_name: redis
ports:
- '6379:6379'
上面的代码将创建redis
服务。该服务将使用Docker Hub的redislabs/redismod
Docker映像来构建Docker容器。 container_name
是redis
。 redis
容器将在6379
端口上运行。
- 烧瓶服务
要创建
Flask
服务,请在创建的文件中添加以下代码:
flask:
build: .
container_name: flask
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
上面的代码将创建一个flask
服务,该服务取决于要运行的redis
服务。此服务将在flask-redis
文件夹Docker Image中使用Docker文件来构建Docker容器。 container_name
是flask
。 flask
容器将在5000
端口上运行。该代码还将在工作目录中创建容器卷。容器将将flask-redis
文件夹映射到容器工作目录。当在flask-redis
文件夹中进行文件更改时,将在容器工作目录中自动更新它。它可以确保始终更新容器。
最终的docker-compose.yml
文件将如下所示:
services:
redis:
image: redislabs/redismod
container_name: redis
ports:
- '6379:6379'
flask:
build: .
container_name: flask
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
将两个服务添加到文件后,下一步是使用单个命令,您可以运行docker-compose.yml
一次启动所有容器。
一次启动两个容器
要一次启动两个容器,请使用以下docker-compose
命令:
docker-compose up
命令将构建并启动两个Docker容器,如下所示:
您也可以在http://127.0.0.1:5000/
上访问Web应用程序。
从上图中,我们可以看到使用Redis缓存的容器化烧瓶应用程序正在运行。刷新网页以增加查看网页的次数。
结论
在本教程中,您已经使用docker compose来容器将redis烧瓶应用程序容器化。我们从构建样品Python烧瓶应用程序开始,并实施了用于缓存的Redis。然后,我们创建了一个用于容器化Python烧瓶应用程序的Dockerfile。我们创建了一个docker-compose.yml
,用于添加和配置应用程序的容器作为服务。最后,我们使用docker-compose up
立即启动了两个容器,并在http://127.0.0.1:5000/上访问了该应用程序。
本教程中的应用程序是用于演示目的的简单应用程序。您可以使用自己的烧瓶应用程序来实现本教程的概念。希望本教程对您的DevOps旅程有所帮助,并感谢您的阅读!