Skip to content

Commit

Permalink
docs: update README
Browse files Browse the repository at this point in the history
  • Loading branch information
fengstats committed Jan 26, 2024
1 parent fcdc1dc commit ff5f526
Showing 1 changed file with 94 additions and 23 deletions.
117 changes: 94 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,113 @@
# Earthworm

## How to run
通过连词构句的方式让你更好的学习英语~ 😊

**node version >= 20**
if you encounter problems installing argon2, you can check [before-installing](https://www.npmjs.com/package/argon2#before-installing)
## 如何开始?

1. Install dependencies
mac:
```bash
brew install docker orbstack
```
win:
install [docker-desktop](https://www.docker.com/products/docker-desktop/)
### ⚠️ 开始前的注意事项

2. open orbstack
- **Node.js version >= v20**
- 该项目依赖 **Docker**,所以请确保你本地已安装并成功运行
- 下面所提到的相关操作基于当前项目的根目录位置,请注意检查不要出错

```bash
docker --version # Docker version 24.0.7, build afdd53b

node --version # v20+
```

### 1. 安装依赖

3. run commands
```bash
## In this project directory
## Run sql and redis services
docker compose up -d
## Configure environment variables
cp .env.example .env
pnpm install
pnpm db:push
pnpm data:init
```
4. run serve

### 2. 复制 `.env.example` 内容到 `.env` 文件

若文件不存在则需要手动创建,Linux 用户可以通过下面的命令进行操作

> 主要存储系统的环境变量信息,如数据库连接地址、用户名、密码、端口、密钥等等,后端服务会从此文件中读取配置,当然你也可以更改为你的配置信息
```bash
cp .env.example .env
```

### 3. 启动/停止/删除 Docker 服务

后端用到了 MySQL 和 Redis 服务,通过下面在 `package.json` 中配置的命令启动和停止

```bash
# 启动
pnpm docker:start
# 停止
pnpm docker:stop
# 删除
pnpm docker:delete
```

当然如果你更喜欢手动挡

```bash
docker compose up -d
docker compose stop
docker compose down

# 兼容老版本 docker 的命令
docker-compose up -d
```

### 4. 初始化数据库

执行当前命令时,尽量跟上个命令间隔一点点时间,因为我们使用了 `-d` 参数会让其服务挂后台执行,可能还在 running 中,如果发现报错那就再执行一遍~

```bash
pnpm db:init
```

### 5. 创建并上传课程数据(只在第一次初始化数据库时执行)

```bash
pnpm db:upload
```

### 6. 启动后端服务

```bash
pnpm serve:dev
```
5. run client

### 7. 启动前端服务

```bash
pnpm client:dev
```

## 常见问题解答

### 如何正确的更新课程数据?

⚠️ 多次执行 `pnpm db:upload` 会导致数据库中课程 `id` 持续自增并覆盖,所以当你发现有错误的课程数据并更改对应 `json` 文件后,应当使用下面的命令将课程数据更新到数据库中

```bash
pnpm db:update
```

### 数据库中的课程 id 被脚本自增覆盖后导致后端服务报错?

**尝试删除掉 Docker 容器,但重新启动后还是保留了之前的数据?**

因为数据是被存储在本地的 Docker Volumes 中,具体在 [docker-compose.yml](./docker-compose.yml) 最顶层中的配置参数 `volumes` 可以看到,所以即使你停止或者删除掉了容器,但数据还是会保留的。

⚠️ 要解决这个问题其实很简单,把 volumes 数据删除即可,当然我们也提供了一个命令给你,但需要注意的是使用之后,会删除数据库中的所有数据,你也需要重新跑一遍 **如何开始** 的步骤(从步骤 3 开始即可)

```bash
pnpm docker:down

# 本质上就是执行下面这个,意思是停止并删除容器服务 + 创建的 volumes 数据
docker-compose down --volumes
```

**TODO**: 后面看看有没有更优雅的方式规避或解决这个问题,一开始本来是想着直接删数据库数据,但是发现有外键约束。

## 前端开发规范

Expand All @@ -45,5 +118,3 @@ pnpm client:dev
2. composables 里面不要包含 UI 逻辑
1. useMessage 之类的
2. router 相关的也不要放进去(不便于测试 我们把 router 划分为 UI 逻辑)


0 comments on commit ff5f526

Please sign in to comment.