【Rainbond最佳實踐】Spring Boot框架配置MySQL

【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類應用。html

雲幫提供Spring Boot配置MySQL服務的示例,去雲市一鍵式部署Spring Boot-MySQL示例java

如下內容是本地建立和運行該示例的過程:mysql

建立示例

使用spring-boot-cli建立示例git

$ docker run -it --rm \
-v $PWD:/app goodrainapps/spring-boot-cli:1.5.9 spring init --dependencies=web spring-boot-mysql-demo

進入示例類文件存放目錄github

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

添加DemoApplication.javaweb

@Controller
@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中。spring

$ 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 示例sql

$ 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/*.jar

訪問http://localhost:8080查看運行結果。docker

配置數據庫

雲幫提供Spring-boot-mysql-demo的相關配置目錄結構以下,配置文件內容僅供參考。數據庫

圖片描述

詳細配置參考下文:

鏈接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.Driver
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服務的運行界面

圖片描述

相關文章
相關標籤/搜索