# service-4ncov **Repository Path**: hansmong/service-4ncov ## Basic Information - **Project Name**: service-4ncov - **Description**: service-4ncov - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-02-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 4nCoV 后端 4nCoV平台的后端服务. ## 环境 ### 运行环境 - Java 8 - Spring Boot 2.1.0.RELEASE - MyBatis 3.3.0 - Flyway 用于数据库DDL(Data Definition Language)脚本版本控制 - MySQL 5.7 - Docker ### 测试框架 - JUnit 5 jupiter - Mockito 3 ## 本地构建与测试 - `mvn clean test # 跑测试` - `mvn clean package # 构建,构建完成的包位于 ./target 目录下` ## 部署与启动 ### Plain JRE ``` java -jar -Dspring.profiles.active=${ACTIVE_PROFILE} \ -Dspring.datasource.username=${DB_USERNAME} \ -Dspring.datasource.password=${DB_PASSWORD} \ -Dspring.datasource.url=${DB_URL} \ -Dsecurity.jwtSecret=${JWT_SECRET} \ -Doss.endpoint=${OSS_ENDPOINT} \ -Doss.region=${OSS_REGION} \ -Doss.bucketName=${OSS_BUCKET_NAME} \ -Doss.accessKey=${OSS_ACCESS_KEY} \ -Doss.secretKey=${OSS_SECRET_KEY} \ target/4ncov-0.0.1-SNAPSHOT.jar # 通过传入ACTIVE_PROFILE的值确定当前环境配置,可选项:dev,prod ``` ### Docker - 打包docker镜像: `docker build -t 4ncov/service . -f Dockerfile` - 部署docker容器: ``` docker run -dp 8000:8000 --name 4ncov-service \ -e SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE} \ # dev,prod -e DB_USERNAME=${DB_USERNAME} \ # database username -e DB_PASSWORD=${DB_PASSWORD} \ # database password -e DB_HOST=${DB_HOST} \ # database host -e DB_PORT=${DB_PORT} \ # database port -e JWT_SECRET=${JWT_SECRET} \ # jwt secret -e OSS_ENDPOINT=${OSS_ENDPOINT} \ # oss endpoint -e OSS_REGION=${OSS_REGION} \ # oss region -e OSS_BUCKET_NAME=${OSS_BUCKET_NAME} \ # oss bucket name -e OSS_ACCESS_KEY=${OSS_ACCESS_KEY} \ # oss access key -e OSS_SECRET_KEY=${OSS_SECRET_KEY} \ # oss secret key 4ncov/service ``` ## 数据库版本控制 使用`**flyway**`进行数据库脚本的版本控制,服务启动时会自动进行数据库脚本的migration. 所有需要在数据库执行的脚本请放置于: `src/main/resources/db/migration`,命名方式为:`Vyyyy_MM_dd_HH_mm__Name_Of_Script.sql`,如`V2020_01_31_20_01__Create_4ncov_Tables.sql`. 通过运行`FlywayApplication`可以单独将数据库脚本migrate到所连接的数据库当中. ## 项目进度与版本控制 - 看板: [GitHub Projects](https://github.com/4ncov/service-4ncov/projects/1) - 开始开发前请自觉将看板的issue分配给自己并从`TODO`挪入`IN PROGRESS`,开发并验证完成之后挪入`DONE` - 创建短时的分支来进行开发 - 分支命名 - 故事 `story-${issueNo}-${description}`, 如 `story-8-requester-signup-endpoint` - 任务 `task-${issueNo}-${description}`, 如`task-15-api-documentation` - 合并回master分支之前,需要提PR(Pull Request)申请将分支合并回master,并分配PR给**除自己之外**的collaborator进行code review - Code review可直接在PR当中进行 ## 编码规约 - 严格遵照plugin: `Alibaba Java Coding Guidelines`. - 4空格缩进、禁止使用制表符`Tab` - 单行代码禁止超过121个字符、过长需要按照实际情况换行(以`.` `,`等为换行分隔符)。 - 方法长度禁止超过80行,长方法应适当的通过方法调用减少单个方法长度,并在调用方法上给出明确的方法文档。 - 严格的间隔规定: 例如 ```java class Example { public static void main(String[] args) { for (int i = 0; i < n; i++) { // 规范代码 } } } ``` ```java class Example { public static void main(String[] args){ for(int i=0;i