25.09.01
parent
4236de43a9
commit
a5290c5e03
29
Dockerfile
29
Dockerfile
|
@ -1,16 +1,33 @@
|
||||||
FROM python:3.12-slim
|
FROM python:3.12-slim AS builder
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
|
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /app/wheels -r requirements.txt
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
|
||||||
|
|
||||||
COPY . .
|
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
|
EXPOSE 8000
|
||||||
|
|
||||||
# CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
# CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||||
|
CMD ["gunicorn", "--config", "gunicorn.conf.pyc", "main:app"]
|
||||||
# CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "-b", "0.0.0.0:8000", "main:app"]
|
|
||||||
CMD ["gunicorn", "--config", "gunicorn.conf.py", "main:app"]
|
|
||||||
|
|
|
@ -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"]
|
|
@ -34,7 +34,7 @@ async def get_favicon(
|
||||||
bg_tasks: BackgroundTasks,
|
bg_tasks: BackgroundTasks,
|
||||||
url: Optional[str] = Query(None, description="网址:eg. https://www.baidu.com"),
|
url: Optional[str] = Query(None, description="网址:eg. https://www.baidu.com"),
|
||||||
refresh: Optional[str] = Query(None, include_in_schema=False),
|
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)
|
return await _service.get_favicon_handler(request, bg_tasks, url, refresh, sync)
|
||||||
|
|
|
@ -3,18 +3,19 @@
|
||||||
# 绑定地址和端口
|
# 绑定地址和端口
|
||||||
bind = "0.0.0.0:8000"
|
bind = "0.0.0.0:8000"
|
||||||
|
|
||||||
# Worker 进程数
|
# Worker 进程数(推荐 CPU 核心数 * 2 + 1)
|
||||||
workers = 4
|
workers = 4
|
||||||
|
|
||||||
# 使用 Uvicorn 的 ASGI Worker
|
# 工作模式(sync、gevent、uvicorn.workers.UvicornWorker)
|
||||||
worker_class = "uvicorn.workers.UvicornWorker"
|
worker_class = "uvicorn.workers.UvicornWorker"
|
||||||
|
|
||||||
# 可选:日志级别
|
# 日志级别(debug、info、warning、error、critical)
|
||||||
loglevel = "info"
|
loglevel = "info"
|
||||||
# loglevel = "warning"
|
|
||||||
|
|
||||||
# 可选:访问日志和错误日志输出到控制台(Docker 常用)
|
# 访问日志文件("-" 表示输出到 stdout)
|
||||||
accesslog = "-"
|
accesslog = "-"
|
||||||
|
|
||||||
|
# 错误日志文件
|
||||||
errorlog = "-"
|
errorlog = "-"
|
||||||
|
|
||||||
# 可选:超时时间(秒)
|
# 可选:超时时间(秒)
|
||||||
|
@ -22,3 +23,9 @@ timeout = 120
|
||||||
|
|
||||||
# Keep - Alive超时
|
# Keep - Alive超时
|
||||||
keepalive = 5
|
keepalive = 5
|
||||||
|
|
||||||
|
# 进程名(ps aux 中显示)
|
||||||
|
# proc_name = "gunicorn"
|
||||||
|
|
||||||
|
# 守护进程运行(后台运行,默认 False)
|
||||||
|
# daemon = True
|
||||||
|
|
Loading…
Reference in New Issue