25.09.16 update

master
jinql 2025-09-16 16:12:38 +08:00
parent 96a975b9ad
commit c5dd60a82d
4 changed files with 33 additions and 38 deletions

View File

@ -16,6 +16,11 @@ venv/
__pycache__/
# 忽略指定目录
.vscode/
data/
logs/
conf/
Dockerfile
docker-compose.yml
README.md
LICENSE

View File

@ -1,36 +1,19 @@
FROM python:3.13-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /app/wheels -r requirements.txt
RUN pip wheel --no-cache-dir --wheel-dir /app/wheels -r requirements.txt
COPY . .
RUN python -m compileall -b . && find . -name "*.py" -delete
RUN python -m compileall -b .
FROM python:3.13-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
RUN pip install --no-cache /app/wheels/* && chmod +x /app/entrypoint.sh && rm -rf /wheels /app/wheels
EXPOSE 8000
VOLUME ["/app/data", "/app/conf", "/app/logs"]
VOLUME ["/app/data", "/app/logs"]
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["gunicorn", "-c", "conf/gunicorn.conf.py", "main:app"]

View File

@ -9,31 +9,39 @@ gunicorn_conf="/app/conf/gunicorn.conf.py"
logging_conf="/app/conf/logging.yaml"
if [ ! -f "$gunicorn_conf" ]; then
echo "复制gunicorn.conf.py..."
if [ -f "$default_conf_dir/gunicorn_conf_py" ]; then
cp "$default_conf_dir/gunicorn_conf_py" "$gunicorn_conf"
echo "复制 gunicorn.conf.py..."
if [ -f "${default_conf_dir}/gunicorn_conf_py" ]; then
cp "${default_conf_dir}/gunicorn_conf_py" "$gunicorn_conf"
chmod 644 "$gunicorn_conf"
echo "复制gunicorn.conf.py成功"
echo "复制 gunicorn.conf.py 成功"
else
echo "警告:默认配置文件 $default_conf_dir/gunicorn_conf_py 不存在,创建空文件"
echo "警告:默认配置文件 ${default_conf_dir}/gunicorn_conf_py 不存在,创建空文件"
touch "$gunicorn_conf"
chmod 644 "$gunicorn_conf"
fi
fi
if [ ! -f "$logging_conf" ]; then
echo "复制logging.yaml..."
if [ -f "$default_conf_dir/logging.yaml" ]; then
cp "$default_conf_dir/logging.yaml" "$logging_conf"
echo "复制 logging.yaml..."
if [ -f "${default_conf_dir}/logging.yaml" ]; then
cp "${default_conf_dir}/logging.yaml" "$logging_conf"
chmod 644 "$logging_conf"
echo "复制logging.yaml成功"
echo "复制 logging.yaml 成功"
else
echo "警告:默认配置文件 $default_conf_dir/logging.yaml 不存在,创建空文件"
echo "警告:默认配置文件 ${default_conf_dir}/logging.yaml 不存在,创建空文件"
touch "$logging_conf"
chmod 644 "$logging_conf"
fi
fi
mkdir -p /app/logs /app/data
if [ ! -d "/app/logs" ]; then
mkdir -p /app/logs
chmod 755 /app/logs
fi
if [ ! -d "/app/data" ]; then
mkdir -p /app/data
chmod 755 /app/data
fi
exec "$@"

View File

@ -1,14 +1,13 @@
--index https://mirrors.xinac.net/pypi/simple
--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple
--index https://pypi.tuna.tsinghua.edu.cn/simple
--extra-index-url https://mirrors.xinac.net/pypi/simple
--trusted-host pypi.tuna.tsinghua.edu.cn
--trusted-host mirrors.aliyun.com
--trusted-host mirrors.xinac.net
fastapi~=0.116.1
pydantic~=2.11.7
pydantic_core~=2.33.2
starlette~=0.47.3
requests~=2.32.5
aiohttp~=3.12.15
bs4~=0.0.2
beautifulsoup4~=4.13.5
lxml~=6.0.1
PyYAML~=6.0.2
uvicorn~=0.35.0