【Rainbond最佳实践】Spring Boot框架配置MySQL

Rainbond开源软件介绍:

Rainbond是国内首个开源的生产级无服务器PaaS。

深度整合基于Kubernetes的容器管理、多类型CI/CD应用构建与交付、多数据中心的资源管理等技术,提供云原生应用全生命周期解决方案,构建应用与基础设施、应用之间及基础设施之间的互联互通生态体系。12月12日,Rainbond正式开源。



[Rainbond详细介绍](http://www.rainbond.com/docs/stable/getting-started/design-concept.html)

[Rainbond项目地址](https://github.com/goodrain/rainbond)

Spring Boot框架简化了新Spring应用的初始搭建以及开发过程,云帮支持平台部署Spring Boot类应用。

云帮提供Spring Boot配置MySQL服务的示例,去云市一键式部署Spring Boot-MySQL示例

**以下内容是本地创建和运行该示例的过程:**

创建示例

使用spring-boot-cli创建示例

$ docker run -it --rm \

-v $PWD:/app goodrainapps/spring-boot-cli:1.5.9 spring init --dependencies=web spring-boot-mysql-demo

进入示例类文件存放目录

$ cd spring-boot-mysql-demo/src/main/java/com/example/springbootmysqldemo

添加DemoApplication.java

@Controlle

@SpringBootApplication

public class DemoApplication {



        @RequestMapping("/")

        @ResponseBody

        String home() {

                return "Hello World!";

        }



        public static void main(String[] args) {

                SpringApplication.run(DemoApplication.class, args);

        }

}

构建示例

为了加快maven构建,在setting.xml中添加了国内的mirror。将setting.xml拷贝到您的spring-boot-mysql-demo中。

$ cd spring-boot-mysql-demo

$ docker run -it --rm \

-v "$PWD":/app/build \

-w /app/build maven:3.5.2-jdk-7-alpine mvn -B -DskipTests=true -s settings.xml clean install

运行

执行以下命令运行Hello World 示例

$ cd spring-boot-mysql-demo

$ docker run -it --rm -v $PWD:/app -w /app -p 8080:8080  goodrainapps/openjdk:8u131-jre-alpine java  -jar target/\*.ja

访问http://localhost:8080查看运行结果。

配置数据库

云帮提供Spring-boot-mysql-demo的相关配置目录结构如下,配置文件内容仅供参考。

1.png

详细配置参考下文:

连接MySQL

添加以下内容,将此应用与数据库进行连接。

pom.xml内添mysql数据库服务 :

<dependency>

   <groupId>mysql</groupId>

   <artifactId>mysql-connector-java</artifactId>

   <version>5.1.9</version>

</dependency>

添加JDBC驱动:

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

application.properties添加数据库连接信息:

spring.datasource.url=jdbc:mysql://${MYSQL\_HOST}:${MSYQL\_PORT}/demo?createDatabaseIfNotExist=true

spring.datasource.username=${MYSQL\_USER}

spring.datasource.password=${MYSQL\_PASS}

spring.datasource.driver-class-name=com.mysql.jdbc.Drive

spring.datasource.maxActive=10

spring.datasource.maxIdle=5

spring.datasource.minIdle=2

spring.datasource.initialSize=5

spring.datasource.removeAbandoned=true

在源码添加DatabaseConfig.java

@Configuration

public class DatabaseConfig {

    @Bean

    @Primary

    @ConfigurationProperties(prefix = "spring.datasource")

    public DataSource dataSource() {

        return new org.apache.tomcat.jdbc.pool.DataSource();

    }

}

数据库初始化

使用 JPA 管理生成实体的映射关系的代码。

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency

数据库重构与迁移

使用LiquiBase,以便将JPA生成实体的映射关系在数据库体现。第一步,在pom.xml添加:

<dependency>

   <groupId>org.liquibase</groupId>

   <artifactId>liquibase-core</artifactId>

   <version>3.4.1</version>

</dependency>

第二步,创建 Liquibase 的修改日志,默认从 db.changelog-master.yaml 读取:

databaseChangeLog:

  - changeSet:

      id: 1

      author: <your\_name>

      changes:

        - createTable:

            tableName: person

            columns:

              - column:

                  name: id

                  type: int

                  autoIncrement: true

                  constraints:                        

                    primaryKey: true

                    nullable: false

              - column:

                  name: first\_name

                  type: varchar(255)

                  constraints:

                    nullable: false

              - column:

                  name: last\_name

                  type: varchar(255)

                  constraints:

                    nullable: false

模板渲染

Thymeleaf可以帮助渲染XMLXHTMLHTML5内容的模板引擎,它也可以轻易的与Spring MVC等Web框架集成作为Web应用的模板引擎。在pom.xml中添加:

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

docker化改造

为了支持 Spring Boot MySQL demo 轻松部署在云帮,将demo使用Dockerfile构建镜像,在云帮实现一键式部署

#使用配置好环境的父镜像

FROM maven:3.5.2-jdk-7-alpine

#创建demo源码工作目录

RUN mkdir /app

#将本地源码拷贝到镜像中

COPY . /app/

#指定工作目录

WORKDIR /app

#声明映射端口

EXPOSE 5000

#指定maven的配置文件,文件内制定新的mirror地址

RUN mvn -B -DskipTests=true clean install

#启动脚本

ENTRYPOINT ["/app/run.sh"]

构建镜像

$ docker build -t goodrainapps/spring-boot-mysql-demo .

运行

#运行mysql

$ docker run -d --name mysql -e MYSQL\_ROOT\_PASSWORD=123456 mysql
#运行示例

$ docker run -it --rm --link mysql \

  -p 5000:5000 \

  -e MYSQL\_HOST=mysql \

  -e MYSQL\_PORT=3306 \

  -e MYSQL\_USER=root \

  -e MYSQL\_PASS=123456 \

  goodrainapps/spring-boot-mysql-demo

访问http://localhost:5000查看Spring Boot 框架配置MySQL服务的运行界面

2.png

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云原生架构实践

JHipster生成微服务架构的应用栈(一)- 准备工作

本系列文章会说明如何生成uaa(即图中的JHipster UAA),microservice1,gateway这3个微服务。

3762
来自专栏电光石火

PHP5.3、PHP5.4安装ZendOptimizer

现在很多PHP程序都需要ZendOptimizer环境,但是ZendOptimizer在PHP5.2之后已经被支持,那怎么办,Zend也不会这么做,原来PHP5...

2597
来自专栏IT笔记

SpringBoot开发案例之整合日志管理

有一种力量无人能抵挡,它永不言败生来倔强。有一种理想照亮了迷茫,在那写满荣耀的地方。

4858
来自专栏小狼的世界

Jenkins 快速搭建

Jenkins 作为持续集成的重要工具,在DevOps整个工具链中有重要的地位。Jenkins 一般作为独立的应用运行在Java Servlet容器中如Jett...

1233
来自专栏Netkiller

跟我学 systemd

跟我学 systemd 摘要 我的系列文档 Netkiller Architect 手札Netkiller Developer 手札Netkiller PHP ...

37412
来自专栏全华班

springcloud学习手册-Eureka常见问题总结

导读 | Eureka常见问题总结 ? 一、配置方法问题汇总 1.1. Eureka Environment的配置: eureka.environment: 字...

5506
来自专栏携程技术中心

干货 | 深度剖析服务发现组件Netflix Eureka

作者简介 宋顺,携程框架研发部技术专家。2016年初加入携程,主要负责中间件产品的相关研发工作。毕业于复旦大学软件工程系,曾就职于大众点评,担任后台系统技术负责...

4355
来自专栏子勰随笔

在Linux服务器(ubuntu 16)上部署多套PHP环境

2666
来自专栏IT笔记

SpringBoot开发案例之整合日志管理

有一种力量无人能抵挡,它永不言败生来倔强。有一种理想照亮了迷茫,在那写满荣耀的地方。 ? 00.jpg 概述 参考文档:Logging 这里顺便引用以下部分原文...

4748
来自专栏Java 源码分析

SpringCloud:Eureka服务注册与发现

Eureka 其实就是一个 服务注册与发现的中心,也就是相当于我们前面做的一些生产者的服务需要注册到我们的注册中心,那么我们的消费者就不用把代码写死,而是可以去...

1523

扫码关注云+社区

领取腾讯云代金券