From 985ca10bdd0749e162efa8b41f9ba888ef15aab5 Mon Sep 17 00:00:00 2001 From: liuyuqi-cnb Date: Wed, 17 Jun 2026 17:55:56 +0800 Subject: [PATCH] add docker images --- .gitignore | 2 ++ Backend/Dockerfile | 20 ++++++++++++++++++++ Backend/app.py | 14 +++++++++++++- Backend/database.py | 2 +- Backend/docker-compose.yml | 17 +++++++++++++++++ 5 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 Backend/Dockerfile create mode 100644 Backend/docker-compose.yml diff --git a/.gitignore b/.gitignore index f983a6d..3e032c4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ Data/funds.db __pycache__/ *.pyc *.env +Frontend/dist/ +Backend/static/ diff --git a/Backend/Dockerfile b/Backend/Dockerfile new file mode 100644 index 0000000..f4ec9c8 --- /dev/null +++ b/Backend/Dockerfile @@ -0,0 +1,20 @@ +FROM python:3.10-slim +EXPOSE 5000 +ENV PYTHONDONTWRITEBYTECODE=1 +ENV TIME_ZONE=Asia/Shanghai +RUN echo "${TIME_ZONE}" > /etc/timezone \ + && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime +ENV PYTHONUNBUFFERED=1 +ENV FLASK_ENV=development +ENV FLASK_APP=run.py +ENV DEBUG=True +COPY requirements.txt . +RUN pip install --no-cache-dir --upgrade pip +RUN python -m pip install --no-cache-dir -r requirements.txt +WORKDIR /app +# COPY env.sample .env +COPY . /app +RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app +USER appuser +VOLUME [ "/data" ] +CMD ["python", "app.py"] diff --git a/Backend/app.py b/Backend/app.py index 4f2c2d0..21a4a5c 100644 --- a/Backend/app.py +++ b/Backend/app.py @@ -18,7 +18,7 @@ import time import re import requests -app = Flask(__name__) +app = Flask(__name__, static_folder='static', static_url_path='') CORS(app) # 允许跨域请求 # 注册市场数据 Blueprint @@ -2440,5 +2440,17 @@ def preload_services(): # 启动预加载(在应用启动时执行) preload_services() +from flask import send_from_directory + +@app.route('/', defaults={'path': ''}) +@app.route('/') +def serve_frontend(path): + """服务前端静态文件,SPA 路由支持""" + import os + static_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static') + if path and os.path.exists(os.path.join(static_dir, path)): + return send_from_directory(static_dir, path) + return send_from_directory(static_dir, 'index.html') + if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file diff --git a/Backend/database.py b/Backend/database.py index 58caf8a..1b76c16 100644 --- a/Backend/database.py +++ b/Backend/database.py @@ -6,7 +6,7 @@ from pathlib import Path # 获取当前文件所在目录(Backend/) BACKEND_DIR = Path(__file__).parent.resolve() # 项目根目录 = BACKEND_DIR 的父目录 -PROJECT_ROOT = BACKEND_DIR.parent +PROJECT_ROOT = BACKEND_DIR # 数据库路径:PROJECT_ROOT / Data / funds.db DATABASE_PATH = PROJECT_ROOT / "Data" / "funds.db" diff --git a/Backend/docker-compose.yml b/Backend/docker-compose.yml new file mode 100644 index 0000000..5b895eb --- /dev/null +++ b/Backend/docker-compose.yml @@ -0,0 +1,17 @@ + services: + backend: + container_name: gofundbot + image: jianboy/gofundbot:latest + volumes: + - ./Data:/app/Data + ports: + - 5000:5000 + restart: always + + volumes: + db_data: + + + networks: + default: + driver: bridge