feat(docker): add Docker support with Dockerfile, docker-compose.yml, and .dockerignore; update README for Docker deployment instructions
This commit is contained in:
parent
9556854fbf
commit
0efd9352a0
7 changed files with 156 additions and 9 deletions
23
.dockerignore
Normal file
23
.dockerignore
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
.git
|
||||||
|
.github
|
||||||
|
.gitignore
|
||||||
|
.cursor
|
||||||
|
.DS_Store
|
||||||
|
.env
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
frontend/node_modules
|
||||||
|
backend/.venv
|
||||||
|
.venv
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
__pycache__
|
||||||
|
*.pyc
|
||||||
|
.pytest_cache
|
||||||
|
.mypy_cache
|
||||||
|
.ruff_cache
|
||||||
|
|
||||||
|
frontend/dist
|
||||||
|
frontend/.vite
|
||||||
|
|
||||||
|
backend/uploads
|
||||||
49
.github/workflows/docker-image.yml
vendored
Normal file
49
.github/workflows/docker-image.yml
vendored
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
name: Build and push Docker image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags: ["*"]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Log in to GHCR
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Extract metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ghcr.io/${{ github.repository_owner }}/mirofish
|
||||||
|
tags: |
|
||||||
|
type=ref,event=tag
|
||||||
|
type=sha
|
||||||
|
type=raw,value=latest
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
29
Dockerfile
Normal file
29
Dockerfile
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
FROM python:3.11
|
||||||
|
|
||||||
|
# 安装 Node.js (满足 >=18)及必要工具
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends nodejs npm \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# 从 uv 官方镜像复制 uv
|
||||||
|
COPY --from=ghcr.io/astral-sh/uv:0.9.26 /uv /uvx /bin/
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 先复制依赖描述文件以利用缓存
|
||||||
|
COPY package.json package-lock.json ./
|
||||||
|
COPY frontend/package.json frontend/package-lock.json ./frontend/
|
||||||
|
COPY backend/pyproject.toml backend/uv.lock ./backend/
|
||||||
|
|
||||||
|
# 安装依赖(Node + Python)
|
||||||
|
RUN npm ci \
|
||||||
|
&& npm ci --prefix frontend \
|
||||||
|
&& cd backend && uv sync --frozen
|
||||||
|
|
||||||
|
# 复制项目源码
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
EXPOSE 3000 5001
|
||||||
|
|
||||||
|
# 同时启动前后端(开发模式)
|
||||||
|
CMD ["npm", "run", "dev"]
|
||||||
24
README-EN.md
24
README-EN.md
|
|
@ -87,7 +87,9 @@ Click the image to watch MiroFish's deep prediction of the lost ending based on
|
||||||
|
|
||||||
## 🚀 Quick Start
|
## 🚀 Quick Start
|
||||||
|
|
||||||
### Prerequisites
|
### Option 1: Source Code Deployment (Recommended)
|
||||||
|
|
||||||
|
#### Prerequisites
|
||||||
|
|
||||||
| Tool | Version | Description | Check Installation |
|
| Tool | Version | Description | Check Installation |
|
||||||
|------|---------|-------------|-------------------|
|
|------|---------|-------------|-------------------|
|
||||||
|
|
@ -95,7 +97,7 @@ Click the image to watch MiroFish's deep prediction of the lost ending based on
|
||||||
| **Python** | ≥3.11, ≤3.12 | Backend runtime | `python --version` |
|
| **Python** | ≥3.11, ≤3.12 | Backend runtime | `python --version` |
|
||||||
| **uv** | Latest | Python package manager | `uv --version` |
|
| **uv** | Latest | Python package manager | `uv --version` |
|
||||||
|
|
||||||
### 1. Configure Environment Variables
|
#### 1. Configure Environment Variables
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Copy the example configuration file
|
# Copy the example configuration file
|
||||||
|
|
@ -119,7 +121,7 @@ LLM_MODEL_NAME=qwen-plus
|
||||||
ZEP_API_KEY=your_zep_api_key
|
ZEP_API_KEY=your_zep_api_key
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Install Dependencies
|
#### 2. Install Dependencies
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# One-click installation of all dependencies (root + frontend + backend)
|
# One-click installation of all dependencies (root + frontend + backend)
|
||||||
|
|
@ -136,7 +138,7 @@ npm run setup
|
||||||
npm run setup:backend
|
npm run setup:backend
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Start Services
|
#### 3. Start Services
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Start both frontend and backend (run from project root)
|
# Start both frontend and backend (run from project root)
|
||||||
|
|
@ -154,6 +156,20 @@ npm run backend # Start backend only
|
||||||
npm run frontend # Start frontend only
|
npm run frontend # Start frontend only
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Option 2: Docker Deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Configure environment variables (same as source deployment)
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
# 2. Pull image and start
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Reads `.env` from root directory by default, maps ports `3000 (frontend) / 5001 (backend)`
|
||||||
|
|
||||||
|
> Mirror address for faster pulling is provided as comments in `docker-compose.yml`, replace if needed.
|
||||||
|
|
||||||
## 📬 Join the Conversation
|
## 📬 Join the Conversation
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
|
||||||
24
README.md
24
README.md
|
|
@ -87,7 +87,9 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
|
||||||
|
|
||||||
## 🚀 快速开始
|
## 🚀 快速开始
|
||||||
|
|
||||||
### 前置要求
|
### 一、源码部署(推荐)
|
||||||
|
|
||||||
|
#### 前置要求
|
||||||
|
|
||||||
| 工具 | 版本要求 | 说明 | 安装检查 |
|
| 工具 | 版本要求 | 说明 | 安装检查 |
|
||||||
|------|---------|------|---------|
|
|------|---------|------|---------|
|
||||||
|
|
@ -95,7 +97,7 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
|
||||||
| **Python** | ≥3.11, ≤3.12 | 后端运行环境 | `python --version` |
|
| **Python** | ≥3.11, ≤3.12 | 后端运行环境 | `python --version` |
|
||||||
| **uv** | 最新版 | Python 包管理器 | `uv --version` |
|
| **uv** | 最新版 | Python 包管理器 | `uv --version` |
|
||||||
|
|
||||||
### 1. 配置环境变量
|
#### 1. 配置环境变量
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 复制示例配置文件
|
# 复制示例配置文件
|
||||||
|
|
@ -119,7 +121,7 @@ LLM_MODEL_NAME=qwen-plus
|
||||||
ZEP_API_KEY=your_zep_api_key
|
ZEP_API_KEY=your_zep_api_key
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. 安装依赖
|
#### 2. 安装依赖
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 一键安装所有依赖(根目录 + 前端 + 后端)
|
# 一键安装所有依赖(根目录 + 前端 + 后端)
|
||||||
|
|
@ -136,7 +138,7 @@ npm run setup
|
||||||
npm run setup:backend
|
npm run setup:backend
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. 启动服务
|
#### 3. 启动服务
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 同时启动前后端(在项目根目录执行)
|
# 同时启动前后端(在项目根目录执行)
|
||||||
|
|
@ -154,6 +156,20 @@ npm run backend # 仅启动后端
|
||||||
npm run frontend # 仅启动前端
|
npm run frontend # 仅启动前端
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 二、Docker 部署
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 配置环境变量(同源码部署)
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
# 2. 拉取镜像并启动
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
默认会读取根目录下的 `.env`,并映射端口 `3000(前端)/5001(后端)`
|
||||||
|
|
||||||
|
> 在 `docker-compose.yml` 中已通过注释提供加速镜像地址,可按需替换
|
||||||
|
|
||||||
## 📬 更多交流
|
## 📬 更多交流
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
|
||||||
14
docker-compose.yml
Normal file
14
docker-compose.yml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
services:
|
||||||
|
mirofish:
|
||||||
|
image: ghcr.io/666ghj/mirofish:latest
|
||||||
|
# 加速镜像(如拉取缓慢可替换上方地址)
|
||||||
|
# image: ghcr.nju.edu.cn/666ghj/mirofish:latest
|
||||||
|
container_name: mirofish
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
- "5001:5001"
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./backend/uploads:/app/backend/uploads
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite --host",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue