springboot连接容器内mysql_docker部署springboot项目,连接mysql容器
入手docker部署springboot項(xiàng)目,記錄一下學(xué)習(xí)過(guò)程,過(guò)程很簡(jiǎn)單,主要是部署過(guò)程中的收獲,下面跟我一起來(lái)吧
1.創(chuàng)建一個(gè)springboot項(xiàng)目,pom引入maven-docker-plugin依賴(lài)
com.spotify
docker-maven-plugin
0.4.13
${docker.image.prefix}-docker-demo:0.0.1
${project.basedir}/src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar
完成pom如下
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.7.RELEASE
com.tz
docker
0.0.1-SNAPSHOT
docker
Demo project for Spring Boot
1.8
tz
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-data-jpa
org.projectlombok
lombok
1.18.8
provided
org.springframework.boot
spring-boot-maven-plugin
com.spotify
docker-maven-plugin
0.4.13
${docker.image.prefix}-docker-demo:0.0.1
${project.basedir}/src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar
tz-docker-demo
2.編寫(xiě)Dockerfile 文件,文件位置src/main/docker/Dockerfile,文件內(nèi)容如下
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
# 下面jar包的名稱(chēng)為springboot項(xiàng)目打包完成的jar包名稱(chēng)
ADD tz-docker-demo.jar app.jar
EXPOSE 8761
ENTRYPOINT ["java","-jar","/app.jar"]
3.集成jpa,方便測(cè)試mysql連通性,pom依賴(lài)第一步已經(jīng)給出,下面是yml文件內(nèi)容
# server
server:
port: 8081
servlet:
context-path: /boot
# database
spring:
datasource:
url: jdbc:mysql://tz_mysql:3306/mystudy
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
# jpa
jpa:
hibernate:
ddl-auto: update # 建表策略
show-sql: true #顯示SQL語(yǔ)句
yml文件解析
jdbc:mysql://tz_mysql:3306/mystudy
tz_mysql: 我自己的本地mysql的docker鏡像名稱(chēng),此處注意,一會(huì)使用命令啟動(dòng)時(shí)連接容器別名要和此處一致
mystudy: 本地mysql數(shù)據(jù)庫(kù)
4.編寫(xiě)controller
package com.tz.docker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
* @author tz
* @Classname UserController
* @Description
* @Date 2019-08-15 21:08
*/
@RestController
public class UserController {
@Autowired
private UserInfoRepository userInfoRepository;
@RequestMapping("/getUserInfo")
public Object getUserInfo() {
/*
這里有一個(gè)大坑:使用getOne()的方法,可以查到數(shù)據(jù)。但是無(wú)法默認(rèn)轉(zhuǎn)化成JSON數(shù)據(jù),返回接口直接報(bào)錯(cuò)
*/
//UserInfo userInfo = userInfoRepository.getOne(1);
for(int i = 0;i<10;i++){
UserBean userBean = new UserBean();
userBean.setAge(12);
userBean.setBirthday(new Date());
userBean.setCreatedTime(new Date());
userBean.setJob("3333:"+i);
userBean.setSex("1");
userInfoRepository.save(userBean);
}
List all = userInfoRepository.findAll();
return all;
}
}
5.編寫(xiě)dao
package com.tz.docker;
import org.aspectj.weaver.ast.Var;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author tz
* @Classname UserInfoRepository
* @Description
* @Date 2019-08-15 21:06
*/
@Repository
public interface UserInfoRepository extends JpaRepository {
}
6.編寫(xiě)bean
package com.tz.docker;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
/**
* @author tz
* @Classname UserBean
* @Description
* @Date 2019-08-15 21:02
*/
@Data
@Entity //注意包名
@Table(name="user_info")
public class UserBean {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Integer id;
private String name;
private Integer age;
private String sex;
private String job;
private Date birthday;
private Date createdTime;
private Date updateTime;
}
7.開(kāi)始鏡像容器部署,首先打包應(yīng)用,如果不打包直接構(gòu)建鏡像會(huì)保找不到j(luò)ar包的錯(cuò)誤
打包idea中使用maven工具欄
然后第二步build鏡像
用命令就是
mvn clean package docker:build
8.構(gòu)建成功之后使用docker images查看構(gòu)建成功的鏡像
9.確認(rèn)mysql容器運(yùn)行
10.運(yùn)行我們構(gòu)建成功的容器
docker run --rm -p 8081:8081 --name demo --link tz_mysql:tz_mysql tz-docker-demo:0.0.1
命令解析
--rm 運(yùn)行完刪除容器
-p 端口映射
--name 本鏡像名稱(chēng)
--link tz_mysql 第一個(gè)參數(shù)為mysql的docker鏡像名稱(chēng),tz_mysql 第二個(gè)參數(shù)為別名,此處和yml文件中連接mysql的地址保持一致
tz-docker-demo:0.0.1 這個(gè)為我們剛剛build的鏡像名稱(chēng)
11.好了,docker部署springboot項(xiàng)目就是這么簡(jiǎn)單,下面看一下成功
瀏覽器輸入 http://localhost:8081/boot/getUserInfo
顯示
總結(jié)
以上是生活随笔為你收集整理的springboot连接容器内mysql_docker部署springboot项目,连接mysql容器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python学生类出不来中文_求教Pyt
- 下一篇: mysql jdbc批量更新_jdbc批