基于Dockerfile 部署一个 Flask 应用

发布于:2025-08-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

Docker 与 Python:容器化部署应用,实现快速发布与弹性伸缩

以下是一个简单的 Flask 应用

# app.py - 一个简单的Flask应用
from flask import Flask
import os

app = 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:latest
    ports:
      - "5000:5000"
    environment:
      - FLASK_ENV=development

网站公告

今日签到

点亮在社区的每一天
去签到