美文网首页
用Flask框架编写一个简单的Get服务并以Docker方式部署

用Flask框架编写一个简单的Get服务并以Docker方式部署

作者: DarrickBM | 来源:发表于2024-06-30 00:54 被阅读0次

前提条件

  1. 服务器有外网访问权限
  2. docker engine已安装

Flask

计算日期差

from flask import Flask, request, jsonify
import datetime

app = Flask(__name__)

@app.route('/calculate_days', methods=['GET'])
def calculate_days():
    # 获取请求中的originalDate参数,如果没有提供则使用默认值
    original_date_str = request.args.get('originalDate', '2021-11-13')
    try:
        # 尝试将字符串转换为日期对象
        original_date = datetime.datetime.strptime(original_date_str, '%Y-%m-%d').date()
    except ValueError:
        # 如果日期格式不正确,返回错误消息
        return jsonify({"error": "Invalid date format. Please use YYYY-MM-DD format."}), 400

    # 获取当前日期
    current_date = datetime.date.today()
    # 计算偏移天数
    offset = (current_date - original_date).days + 1
    # 创建结果字符串
    result = f"Day {offset} {current_date.strftime('%y.%m.%d')}"
    # 返回包含结果的JSON响应
    return jsonify({'title': result})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)


Dockerfile

# 使用官方 Python 运行时作为基础镜像
FROM python:3.9-slim

# 设置工作目录在容器内
WORKDIR /app

# 将当前目录下的文件复制到容器中的工作目录
ADD app.py /app

# 安装 Flask 库
RUN pip install flask

# 设置时区
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

# 指定容器内部的端口号,应用将在这个端口上运行
EXPOSE 5000

# 设置环境变量,确保 Flask 在生产模式下运行,而不是在开发模式下
ENV TZ="Asia/Shanghai"

# 运行 Flask 应用
CMD ["flask", "run", "--host=0.0.0.0"]

Docker

sudo docker build -t dategap:1.1 .
sudo docker run -d -p 5000:5000 --name dateGapCalc dategap:1.1

测试

在服务器上运行:

curl http://0.0.0.0:5000/calculate_days       

注意事项

5000端口开启外网访问

相关文章

网友评论

      本文标题:用Flask框架编写一个简单的Get服务并以Docker方式部署

      本文链接:https://www.haomeiwen.com/subject/fstpcjtx.html