Compare commits

..

10 Commits

Author SHA1 Message Date
4e32725279 重命名 2025-10-25 15:44:51 +08:00
8649da0b62 移动目录 2025-10-25 15:32:03 +08:00
454bb1e076 打印shedule环境变量 2025-10-25 14:15:05 +08:00
0be7207e07 修改时区到亚洲时区,避免定时任务不按预期执行 2025-10-25 14:14:45 +08:00
6011df78d3 屏蔽data目录 2025-10-25 14:13:58 +08:00
edecb7bffb 从环境变量获取定时计划 2025-10-25 13:31:22 +08:00
f25e9ad5b0 创建并上传到k3s 2025-10-25 13:25:17 +08:00
a7a677247d bet最终镜像 2025-10-25 13:25:01 +08:00
a3f6d0ca1b 基础bet镜像 2025-10-25 13:24:44 +08:00
83cd970765 requirements 2025-10-25 13:24:29 +08:00
8 changed files with 174 additions and 9 deletions

1
.gitignore vendored
View File

@@ -184,3 +184,4 @@ backup_*.sql
# Temporary files
*.tmp
*.temp
data/

19
Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM bet-base:arm64
WORKDIR /app
RUN apt-get update && \
apt-get install -y --no-install-recommends tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata && \
rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
ENV HTTP_PROXY=http://host.docker.internal:7890
COPY . .
CMD ["bash"]

64
Dockerfile-base Normal file
View File

@@ -0,0 +1,64 @@
# 指定目标平台
# syntax=docker/dockerfile:1
FROM python:3.12-slim
# 设置工作目录
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y \
wget \
gnupg \
&& rm -rf /var/lib/apt/lists/*
# 安装Playwright的依赖
RUN apt-get update && apt-get install -y \
libnss3 \
libnspr4 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libdbus-1-3 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
&& rm -rf /var/lib/apt/lists/*
# 配置pip源
RUN mkdir -p /root/.pip && \
echo "[global]" > /root/.pip/pip.conf && \
echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> /root/.pip/pip.conf && \
echo "trusted-host = pypi.tuna.tsinghua.edu.cn" >> /root/.pip/pip.conf
# 更新pip
RUN python -m pip install --upgrade pip
COPY requirements.txt .
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt
# 预先安装 Playwright 的系统依赖
RUN apt-get update && apt-get install -y \
xvfb \
libopengl0 \
&& rm -rf /var/lib/apt/lists/*
# 安装Playwright浏览器
RUN playwright install chromium
RUN playwright install-deps
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["bash"]

View File

@@ -15,7 +15,7 @@ from dao.Database import Database
from playwright.sync_api import sync_playwright, Page, BrowserContext, expect
from loguru import logger
from data_model import MysqlConfig, OddsjamOrderStatus
from dingtalk import DingTalkBot
from common.dingtalk import DingTalkBot
webhook = "https://oapi.dingtalk.com/robot/send?access_token=21de667159edadd33172c6ec414a2addf9c6359189350ffd36819d2a20e8a0f4"
secret = "SEC43a0fa0b29717f98637a119b92a0bd5f7b2b6da671bdd2bd1279ed8323454d5e"
@@ -390,7 +390,7 @@ def get_oddsjam_bet_tracker(ds: str) -> SyncOddsjamBetTracker:
oddsjam_bet_tracker = SyncOddsjamBetTracker(
login_state_path=login_state_save_path,
intercept_response_res_save_path=intercept_response_res_save_path,
# headless=True
headless=True
)
return oddsjam_bet_tracker
@@ -408,9 +408,14 @@ if __name__ == "__main__":
import schedule
# schedule.every().day.at("07:00").do(clear_order_from_oddsjam)
UPLOAD_SCHEDULE = os.environ.get("UPLOAD_SCHEDULE", "10:00")
PULL_SCHEDULE = os.environ.get("PULL_SCHEDULE", "13:00")
logger.info(f"upload schedule: {UPLOAD_SCHEDULE}")
logger.info(f"pull schedule: {PULL_SCHEDULE}")
schedule.every().day.at("11:20").do(pull_data_from_oddsjam_update)
schedule.every().day.at("14:00").do(upload_new_bets_data2oddsjam)
schedule.every().day.at(PULL_SCHEDULE).do(pull_data_from_oddsjam_update)
schedule.every().day.at(UPLOAD_SCHEDULE).do(upload_new_bets_data2oddsjam)
while True:
schedule.run_pending()

71
build-and-push.sh Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/bash
# Value Investing App - 构建和推送脚本
# 使用 docker 构建镜像并推送到私有仓库
set -e # 遇到错误立即退出
# 配置变量
IMAGE_NAME="bet"
REGISTRY="192.168.0.115:5000"
TAG="latest"
FULL_IMAGE_NAME="${REGISTRY}/${IMAGE_NAME}:${TAG}"
echo "========================================="
echo "Value Investing App 构建和推送脚本"
echo "========================================="
# 构建镜像
echo "1. 构建 Docker 镜像..."
echo " 镜像名称: ${IMAGE_NAME}"
docker build --platform linux/arm64 -t ${IMAGE_NAME} .
if [ $? -eq 0 ]; then
echo " ✅ 镜像构建成功"
else
echo " ❌ 镜像构建失败"
exit 1
fi
# 打标签
echo "2. 为镜像打标签..."
echo " 标签: ${FULL_IMAGE_NAME}"
docker tag ${IMAGE_NAME} ${FULL_IMAGE_NAME}
if [ $? -eq 0 ]; then
echo " ✅ 标签添加成功"
else
echo " ❌ 标签添加失败"
exit 1
fi
# 推送到私有仓库
echo "3. 推送镜像到私有仓库..."
echo " 仓库地址: ${REGISTRY}"
docker push ${FULL_IMAGE_NAME}
if [ $? -eq 0 ]; then
echo " ✅ 镜像推送成功"
else
echo " ❌ 镜像推送失败"
exit 1
fi
# 清理本地镜像(可选)
echo "4. 清理临时镜像..."
docker rmi ${IMAGE_NAME} || true
# 显示最终结果
echo ""
echo "========================================="
echo "🎉 构建和推送完成!"
echo "========================================="
echo "镜像地址: ${FULL_IMAGE_NAME}"
echo ""
echo "可以使用以下命令运行容器:"
echo "docker run -d -p 5000:5000 --name value-investing-container ${FULL_IMAGE_NAME}"
echo ""
echo "或者在其他机器上拉取镜像:"
echo "docker pull ${FULL_IMAGE_NAME}"
echo "========================================="

View File

@@ -1,7 +1,12 @@
pymysql==1.1.1
pydantic==2.8.2
playwright==1.45.1
pymysql>=1.1.1
pydantic>=2.8.2
playwright>=1.45.1
numpy
pandas
scipy
scikit-learn
loguru>=0.7.3
retry>=0.9.2
schedule>=1.2.2
requests>=2.32.5
pyarrow