基于Dockerfile 部署一个 Flask 应用
Docker 与 Python:容器化部署应用,实现快速发布与弹性伸缩
以下是一个简单的 Flask 应用
# app.py - 一个简单的Flask应用
from flask import Flask
import osapp = Flask(__name__)@app.route("/")
def hello():env = os.environ.get('FLASK_ENV', "local")print('environ---', os.environ.get('FLASK_ENV', "local"))return "Hello Docker World!" + f"env={env}"@app.route("/health")
def health():return {"status": "healthy"}if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
同目录下有个 requirements.txt 文件,项目依赖文件
Flask==2.3.3
gunicorn==21.2.0
接下来是 Dockerfile ,这是个构建容器的文件
# 选择基础镜像 -python 3.9 官方镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制依赖文件
COPY requirements.txt .# 安装 Python依赖
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 复制应用代码
COPY . .# 暴露端口
EXPOSE 5000# 定义启动命令
CMD ["python", "app.py"]# 也可以借助 gunicorn 替代 Flask 开发服务器
# CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
接下来构建镜像
# 构建Docker镜像
docker build -t my-python-app .# 运行容器
docker run -p 5000:5000 my-python-app
然后访问我们的接口
http://123.57.31.157:5000/http://123.57.31.157:5000/health
然后是 docker-compose.yml 方便本地开发
services:web:image: my-python-app:latestports:- "5000:5000"environment:- FLASK_ENV=development