master
jinql 2025-09-01 23:38:52 +08:00
parent 4236de43a9
commit a5290c5e03
4 changed files with 52 additions and 12 deletions

View File

@ -1,16 +1,33 @@
FROM python:3.12-slim
FROM python:3.12-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /app/wheels -r requirements.txt
COPY . .
RUN python -m compileall -b .
FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /app/wheels /wheels
COPY --from=builder /app/requirements.txt .
RUN pip install --no-cache /wheels/*
COPY --from=builder /app /app
RUN find . -type d -name "__pycache__" | while read -r dir; do \
module_dir=$(dirname "$dir"); \
mv "$dir"/*.pyc "$module_dir/"; \
rmdir "$dir"; \
done
RUN find . -name "*.py" -delete
EXPOSE 8000
# CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
# CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "-b", "0.0.0.0:8000", "main:app"]
CMD ["gunicorn", "--config", "gunicorn.conf.py", "main:app"]
CMD ["gunicorn", "--config", "gunicorn.conf.pyc", "main:app"]

16
Dockerfile.1 Normal file
View File

@ -0,0 +1,16 @@
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
# CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
# CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "-b", "0.0.0.0:8000", "main:app"]
CMD ["gunicorn", "--config", "gunicorn.conf.py", "main:app"]

View File

@ -34,7 +34,7 @@ async def get_favicon(
bg_tasks: BackgroundTasks,
url: Optional[str] = Query(None, description="网址eg. https://www.baidu.com"),
refresh: Optional[str] = Query(None, include_in_schema=False),
sync: Optional[str] = Query(False, description="是否使用同步方式获取")
sync: Optional[str] = Query('false', description="是否使用同步方式获取")
):
"""获取网站图标"""
return await _service.get_favicon_handler(request, bg_tasks, url, refresh, sync)

View File

@ -3,18 +3,19 @@
# 绑定地址和端口
bind = "0.0.0.0:8000"
# Worker 进程数
# Worker 进程数(推荐 CPU 核心数 * 2 + 1
workers = 4
# 使用 Uvicorn 的 ASGI Worker
# 工作模式sync、gevent、uvicorn.workers.UvicornWorker
worker_class = "uvicorn.workers.UvicornWorker"
# 可选:日志级别
# 日志级别debug、info、warning、error、critical
loglevel = "info"
# loglevel = "warning"
# 可选访问日志和错误日志输出到控制台Docker 常用
# 访问日志文件("-" 表示输出到 stdout
accesslog = "-"
# 错误日志文件
errorlog = "-"
# 可选:超时时间(秒)
@ -22,3 +23,9 @@ timeout = 120
# Keep - Alive超时
keepalive = 5
# 进程名ps aux 中显示)
# proc_name = "gunicorn"
# 守护进程运行(后台运行,默认 False
# daemon = True