-
Notifications
You must be signed in to change notification settings - Fork 2
How to develop
Bill Chen edited this page Mar 25, 2022
·
2 revisions
项目已 Dockerize,分为了 dev 环境与 prod 环境。目前服务器上运行的是基于 prod 环境的 Docker,并将 PostgreSQL 的 5432 端口暴露出来,在本地分别见 docker-compose.dev.yml
、docker-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 依赖并编译。