vivo软件开发马拉松大赛学习总结

后端技术

部署

后端部分是使用docker来进行部署的,部署在服务器的/home/vivo-backend/目录下


使用到的docker镜像

  • MySQL:5.7
  • 基于openjdk:8构建的后端镜像

MySQL部署

MySQL部分文件部署在/home/vivo-backend/mysql/目录下

  1. 在上述目录下创建一个版本为5.7的MySQL容器,取名为c_mysql
    • 端口映射为9712
    • 挂载数据卷,在/home/vivo-backend/mysql/目录下存放MySQL的日志,配置,数据等信息
    • 设置密码为root
cd /home/vivo-backend/mysql/
docker run -id \
-p 9712:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
  1. 配置后测试能否远程连接上该数据库

  2. 远程在服务器的MySQL容器里新建一个名为vivo-backend 的数据库,字符集选择使用utf8 -- UTF-8 Unicode

  3. 将在本机的数据库里的数据导出为sql文件,并远程移植到服务器的MySQL容器的数据库vivo-backend

  4. 在服务器里通过如下指令,如果能查询到记录则部署MySQL成功

    docker exec -it c_mysql bash
    mysql -uroot -proot #-p后面没有空格!
    use vivo-backend;
    show tables;
    select * from t_user;
    

后端项目部署

后端部分文件部署在/home/vivo-backend/backend/目录下

  1. 往该目录上传有Dockerfilevivo-backend.jar,分别是docker制定镜像指令文件和后端项目的jar包。该目录下还有一个文件夹resources,是用来挂载之后生成后端容器的数据的,后端生成的文件都会保存在这里
cd / 
mkdir /home/vivo-backend
mkdir /home/vivo-backend/backend
mkdir /home/vivo-backend/backend/resources
  1. 进入/home/vivo-backend/backend目录,生成后端镜像,取名为fun ,版本是1.0
cd /home/vivo-backend/backend/
docker build -f ./Dockerfile -t fun:1.0 .
  1. 根据后端镜像创建容器,取名为vivo-backend,并挂载数据卷
  • 容器和宿主机的端口号都是使用的9713
  • 把容器里的文件挂载到/home/vivo-backend/backend/resources/ 目录下
  • 生成容器即以守护进程形式在后台运行
docker run -id -p 9713:9713 --name=vivo-backend vivo:1.0
  • 可以通过如下指令来查看数据卷是否挂载成功
cd /home/vivo-backend/backend/resources/
ls
docker exec -it backend bash
cd /usr/local/vivo-backend/resources/
ls
  1. 在浏览器访问 i p : {ip}: ip: p o r t {port} port/swagger-ui.html,如果能访问成功,则后端部署成功。同时该url也是后端项目的API文档,可以用于测试

jenkinsfile

这个因为环境没配好所以应该是错的

pipeline {
    agent any

    tools{
        maven 'maven_3.6.3'
    }
    stages {
        stage('拉取代码') {
            steps {
                git credentialsId: '8b4bb2a985c6acd7ef7ed4fd9df90db4ca6d7d2e', url: 'https://git.nju.edu.cn/vivo/vivo_backend.git'
                echo '拉取成功'
            }
        }
        
        stage('执行构建') {
            steps {
            	cd /home/vivo-backend/backend/
                sh "mvn clean package"
                echo '构建完成'
            }
        }
        
        stage('把jar包构建为docker镜像并运行') {
            steps {
                # 停止容器
                docker stop vivo:1.0
                echo "删除容器"
                # 删除容器
                docker rm vivo:1.0
                # 删除镜像
                docker rmi vivo:1.0
                echo "打包镜像"
                # 打包镜像
                docker build -f ./Dockerfile -t vivo:1.0 .
                echo "运行镜像"
                # 运行镜像
                docker run -id -p 9713:8082 --name=vivo-backend vivo:1.0
                echo '运行成功'
            }
        }
    }
}

swagger配置

写个config即可

@Configuration
@EnableSwagger2
public class SwaggerConfig {

}

跨域解决

@CrossOrigin好像没用
参考这篇,把方法三写在方法二就好了,原理待了解

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")// 设置允许跨域请求的域名
                .allowedHeaders("*")// 设置允许的请求头
                .allowCredentials(true)// 是否允许证书
                .allowedMethods("*")// 允许的方法
                .maxAge(3600);// 跨域允许时间
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOriginPattern("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**", config); // CORS 配置对所有接口都有效
        return new CorsFilter(source);
    }


}

其他

  1. 阿里云OSS:参考
    https://www.cnblogs.com/pxblog/p/13402120.html
    https://blog.csdn.net/weixin_45834777/article/details/116211468
  2. wrapper很好用,但xml自定义sql暂时还不会,参考:https://blog.csdn.net/qq_43413788/article/details/103080573
  3. VO里面不用写id
  4. update当然要传id,只传VO的话怎么改
  5. add的接口返回对应的id
  6. 返回数据给前端同学时最好返回java对象,然后会转换为字符串,这样通过key value可以知道数据是什么
  7. builder在构造方法里很好用,加个注解就行
  8. mybatis-plus的set好像有时候会失效,应该是我的原因x
  9. 25小时的马拉松大赛技术大家都大差不差,重点在创意和需求上,答辩要更加分析场景、用户等,用户没必要范围很大,瞄准一部分小群体也是可以的。创意上不要太虚也不要太实,炫酷的库还是要加,融入ai等元素,不然显得太传统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值