Skip to content

How to develop

Bill Chen edited this page Mar 25, 2022 · 2 revisions

本地调试

项目已 Dockerize,分为了 dev 环境与 prod 环境。目前服务器上运行的是基于 prod 环境的 Docker,并将 PostgreSQL 的 5432 端口暴露出来,在本地分别见 docker-compose.dev.ymldocker-compose.prod.yml。在本地可以运行所有 Docker 联调,也可以单独运行单个组件:

  • 本地运行整个项目,请先安装好 Docker Engine 与 Docker Compose,推荐使用 macOS 系统或 Linux 系统。在运行前,确认 docker-compose.prod.yml 文件内服务器的数据库配置是否正确,主要关注下列配置。其中在 Docker 运行时候,如果要连接到本地同一个 Docker-compose 起来的数据库,使用 sklecvis-db 即可。否则在 DB_HOST 指定远程服务器 IP:
    environment:
...
      DB_HOST: xxx
      DB_PORT: xxx
      DB_USERNAME: xxx
      DB_PASSWORD: xxx
      DB_NAME: sklecvis
...
  • 单独运行前端:client 目录下,yarn install && yarn serve
  • 单独运行后端:server 目录下,在 shell 中指定 DB_HOST、DB_USERNAME,DB_PASSWORD,DB_USERNAME,DB_NAME 环境变量,python manage.py runserver。若有需要,在执行前先进行 migrate: python manage.py makemigrations && python manage.py migrate。需要注意的是,./server/media 目录为项目的数据文件存储目录,由于大小原因没有加入版本管理,pull 下来的代码该文件夹为空。但远程数据库中已经含有了该数据集,因此请确保数据库中所有 FileField 类型的字段所查找的文件在本地的 media 中存在,否则会出现异常。(这部分还在考虑后续的优化方案,或许可以采用 OSS 来保证数据一致,或者映射网络磁盘)。

另一种方式是使用 Visual Studio Code 的 Remote Development,直接远程连接到服务器中进行开发,该方法可以保证 media 文件夹的一致性。不过由于是直接在生产环境上改动代码,有一定风险。

提交部署

提交代码时,请不要直接提交到 main / master 分支! 在本地开发时,为避免冲突,切出自己的开发分支,如 git checkout -b dev/yourName,在开发分支上确认开发完成后,提交到远程的开发分支,并向 main 发送 Pull Request。

为了避免前端 webpack 在服务器上编译过久,docker-compose.prod.dev 所指定的 Docke 环境使用打包后的 webpack 文件。在确认改动后,在 client 下 yarn build 之后再 git add .。生产环境会直接使用编译好的 dist 目录来部署,而不是在云端获取 node 依赖并编译。

Clone this wiki locally