From 6b5603df8475e9ffd91bf3d21a52326cb47bfe05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=B4=BA?= Date: Tue, 2 Sep 2025 22:41:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84docker=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .continue/mcpServers/new-mcp-server.yaml | 10 ++++++++ .continue/prompts/new-prompt.yaml | 7 ++++++ .continue/rules/new-rule.md | 5 ++++ app/docker-compose.yml | 26 ++++++++++++++++++++ app/front/nginx.conf | 31 ++++++++++++++++++++++++ backend/dockerfile | 14 +++++++++++ backend/main.py | 10 ++++++++ backend/requirements.txt | 2 ++ front/dockerfile | 15 ++++++++++++ front/src/main.tsx | 2 +- 10 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 .continue/mcpServers/new-mcp-server.yaml create mode 100644 .continue/prompts/new-prompt.yaml create mode 100644 .continue/rules/new-rule.md create mode 100644 app/docker-compose.yml create mode 100644 app/front/nginx.conf create mode 100644 backend/dockerfile create mode 100644 backend/requirements.txt create mode 100644 front/dockerfile diff --git a/.continue/mcpServers/new-mcp-server.yaml b/.continue/mcpServers/new-mcp-server.yaml new file mode 100644 index 0000000..0e32aa6 --- /dev/null +++ b/.continue/mcpServers/new-mcp-server.yaml @@ -0,0 +1,10 @@ +name: New MCP server +version: 0.0.1 +schema: v1 +mcpServers: + - name: New MCP server + command: npx + args: + - -y + - + env: {} diff --git a/.continue/prompts/new-prompt.yaml b/.continue/prompts/new-prompt.yaml new file mode 100644 index 0000000..51a4fa4 --- /dev/null +++ b/.continue/prompts/new-prompt.yaml @@ -0,0 +1,7 @@ +name: New prompt +version: 0.0.1 +schema: v1 +prompts: + - name: 中文做答 + description: New prompt + prompt: 接下来的回复你需要使用中文作答 diff --git a/.continue/rules/new-rule.md b/.continue/rules/new-rule.md new file mode 100644 index 0000000..2f072b3 --- /dev/null +++ b/.continue/rules/new-rule.md @@ -0,0 +1,5 @@ +--- +description: A description of your rule +--- + +你需要使用中文作答 \ No newline at end of file diff --git a/app/docker-compose.yml b/app/docker-compose.yml new file mode 100644 index 0000000..d836225 --- /dev/null +++ b/app/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3.8' + +services: + frontend: + build: + context: ./front + dockerfile: dockerfile + ports: + - "80:80" + depends_on: + - backend + networks: + - app-network + + backend: + build: + context: ./backend + dockerfile: dockerfile + ports: + - "5000:5000" + networks: + - app-network + +networks: + app-network: + driver: bridge \ No newline at end of file diff --git a/app/front/nginx.conf b/app/front/nginx.conf new file mode 100644 index 0000000..0ee161a --- /dev/null +++ b/app/front/nginx.conf @@ -0,0 +1,31 @@ +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # 配置前端路由,支持SPA(单页应用) + server { + listen 80; + server_name localhost; + + root /usr/share/nginx/html; + index index.html; + + # 处理静态文件 + location / { + try_files $uri $uri/ /index.html; + } + + # 代理API请求到后端 + location /api/ { + proxy_pass http://backend:5000/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + } +} \ No newline at end of file diff --git a/backend/dockerfile b/backend/dockerfile new file mode 100644 index 0000000..f41c1aa --- /dev/null +++ b/backend/dockerfile @@ -0,0 +1,14 @@ +FROM python:3.11-slim +WORKDIR /app + +# 安装依赖 +RUN pip install --no-cache-dir fastapi==0.115.8 uvicorn[standard]==0.34.8 python-multipart + +# 复制代码 +COPY . . + +# 暴露端口 +EXPOSE 5000 + +# 启动命令 +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "5000"] diff --git a/backend/main.py b/backend/main.py index a070b04..eb7714a 100644 --- a/backend/main.py +++ b/backend/main.py @@ -1,10 +1,20 @@ from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware import uvicorn import random app = FastAPI() +# 添加CORS中间件,允许所有来源 +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], # 在生产环境中应该指定具体的域名 + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + @app.get("/") async def root(): return {"message": "Hello World"} diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..988d7c2 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,2 @@ +fastapi==0.115.8 +uvicorn[standard]==0.34.8 \ No newline at end of file diff --git a/front/dockerfile b/front/dockerfile new file mode 100644 index 0000000..67f9ce5 --- /dev/null +++ b/front/dockerfile @@ -0,0 +1,15 @@ +# 构建阶段 +FROM node:22 AS build +WORKDIR /app +COPY package*.json ./ +RUN npm ci +COPY . . +RUN npm run build + +# 生产阶段 +FROM nginx:alpine +COPY --from=build /app/dist /usr/share/nginx/html +# 复制nginx配置 +COPY nginx.conf /etc/nginx/nginx.conf +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/front/src/main.tsx b/front/src/main.tsx index bef5202..2caec89 100644 --- a/front/src/main.tsx +++ b/front/src/main.tsx @@ -6,5 +6,5 @@ import App from './App.tsx' createRoot(document.getElementById('root')!).render( - , + )