从零到一:用 Flask 和 Docker 构建并部署一个简单的接口请求页面
在现代 Web 开发中,快速构建和部署 API 接口是一个非常重要的技能。Flask 作为一个轻量级的 Python Web 框架,非常适合用来快速开发 RESTful API。而 Docker 则可以帮助我们将应用容器化,实现跨平台部署和运行。本文将带你从零开始,用 Flask 编写一个简单的接口请求页面,并通过 Dockerfile 将其容器化部署。
1. 项目概述
我们将实现以下功能:
- 一个简单的 Flask 应用,提供两个接口:
- GET 请求接口:接收一个参数
name
,返回问候语。 - POST 请求接口:接收 JSON 数据,返回接收到的数据。
- GET 请求接口:接收一个参数
- 使用 Docker 将应用容器化,方便部署和运行。
2. 开发 Flask 应用
2.1 创建项目结构
首先,创建一个项目目录,并初始化文件结构:
flask-docker-demo/
├── app.py
├── requirements.txt
└── Dockerfile
2.2 编写 Flask 应用代码
在 app.py
中编写以下代码:
from flask import Flask, request, jsonify
app = Flask(__name__)
# 首页路由
@app.route('/')
def home():
return "Welcome to the Flask API!"
# 简单 GET 请求接口
@app.route('/api/get', methods=['GET'])
def get_data():
name = request.args.get('name', 'Guest')
return jsonify({"message": f"Hello, {name}!"})
# 简单 POST 请求接口
@app.route('/api/post', methods=['POST'])
def post_data():
data = request.json
if not data:
return jsonify({"error": "No data provided"}), 400
return jsonify({"received_data": data})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
2.3 创建依赖文件
在 requirements.txt
中列出 Flask 的依赖:
Flask==3.0.3
3. 容器化 Flask 应用
3.1 编写 Dockerfile
在项目根目录下创建 Dockerfile
,内容如下:
# 使用官方 Python 3.8 镜像作为基础镜像
FROM python:3.8-slim
# 设置工作目录
WORKDIR /app
# 复制 requirements.txt 文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 5000
# 启动应用
CMD ["python", "app.py"]
3.2 构建 Docker 镜像
在项目根目录下运行以下命令,构建 Docker 镜像:
docker build -t flask-app .
3.3 运行 Docker 容器
使用以下命令运行容器:
docker run -d -p 5000:5000 --name my-flask-app flask-app
-d
:后台运行容器。-p 5000:5000
:将主机的 5000 端口映射到容器的 5000 端口。--name my-flask-app
:为容器指定名称。
4. 测试接口
4.1 GET 请求测试
打开浏览器或使用 curl
测试 GET 接口:
curl "http://localhost:5000/api/get?name=John"
响应示例:
{
"message": "Hello, John!"
}
4.2 POST 请求测试
使用 curl
测试 POST 接口:
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' http://localhost:5000/api/post
响应示例:
{
"received_data": {
"key": "value"
}
}
5. 停止和删除容器
如果需要停止或删除容器,可以使用以下命令:
# 停止容器
docker stop my-flask-app
# 删除容器
docker rm my-flask-app
6. 推送 Docker 镜像到仓库(可选)
如果需要将镜像推送到 Docker Hub 或其他容器仓库,可以按照以下步骤操作:
-
登录 Docker Hub:
docker login
-
为镜像打标签:
docker tag flask-app your-dockerhub-username/flask-app:latest
-
推送镜像:
docker push your-dockerhub-username/flask-app:latest
7. 总结
通过本文,我们完成了一个简单的 Flask 应用的开发,并使用 Docker 将其容器化部署。这种方法不仅适合本地开发和测试,还可以轻松扩展到生产环境。Flask 的简洁性和 Docker 的便携性相结合,为开发者提供了高效、灵活的开发和部署体验。
如果你正在学习 Flask 或 Docker,希望这篇文章能为你提供一个清晰的入门指南。如果你有任何问题或建议,欢迎在评论区留言!