# main.py
from enum import Enum
from fastapi import FastAPI
from pydantic import BaseModel
import jieba
import jieba.analyse
app = FastAPI()
class Text(BaseModel):
content: str
@app.post("/jieba/")
async def create_item(text: Text):
tags = jieba.analyse.extract_tags(text.content, topK=10, withWeight=1)
return list(map(lambda x: "#" + x[0], tags))
@app.get("/")
async def root():
return "hello world"
dockerfile
# 引入python版本
FROM python:3.10.1
# 设置时间
RUN ln -sf /usr/share/zoneinfo/Asia/Beijing/etc/localtime
# 输出时间
RUN echo 'Asia/Beijing' >/etc/timezone
# 设置工作目录
WORKDIR /code
# 复制该文件到工作目录中
COPY ./requirements.txt /code/requirements.txt
# 禁用缓存并批量安装包(后面的链接是利用豆瓣源安装,速度会加快)
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 复制代码到工作目录
COPY . /code
# 放开端口
EXPOSE 8085
# 命令行运行,启动uvicorn服务,指定ip和端口(--reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。)
CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8085"]
docker-compose
version: "3"
services:
web:
build: .
networks:
- proxy
restart: always
container_name: jieba-server
volumes:
- ./data:/code/app
labels:
- "traefik.enable=true"
- "traefik.http.routers.jieba.rule=Host(`test.abc.xyz`)"
- "traefik.http.routers.jieba.entrypoints=websecure"
- "traefik.http.routers.jieba.service=bark-service"
- "traefik.http.services.jieba-service.loadBalancer.server.port=8085"
networks:
proxy:
external: true