springboot连接容器内mysql_docker部署springboot项目,连接mysql容器
入手docker部署springboot项目,记录一下学习过程,过程很简单,主要是部署过程中的收获,下面跟我一起来吧
1.创建一个springboot项目,pom引入maven-docker-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
完成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.编写Dockerfile 文件,文件位置src/main/docker/Dockerfile,文件内容如下
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
# 下面jar包的名称为springboot项目打包完成的jar包名称
ADD tz-docker-demo.jar app.jar
EXPOSE 8761
ENTRYPOINT ["java","-jar","/app.jar"]
3.集成jpa,方便测试mysql连通性,pom依赖第一步已经给出,下面是yml文件内容
# 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语句
yml文件解析
jdbc:mysql://tz_mysql:3306/mystudy
tz_mysql: 我自己的本地mysql的docker镜像名称,此处注意,一会使用命令启动时连接容器别名要和此处一致
mystudy: 本地mysql数据库
4.编写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() {
/*
这里有一个大坑:使用getOne()的方法,可以查到数据。但是无法默认转化成JSON数据,返回接口直接报错
*/
//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.编写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.编写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.开始镜像容器部署,首先打包应用,如果不打包直接构建镜像会保找不到jar包的错误
打包idea中使用maven工具栏
然后第二步build镜像
用命令就是
mvn clean package docker:build
8.构建成功之后使用docker images查看构建成功的镜像
9.确认mysql容器运行
10.运行我们构建成功的容器
docker run --rm -p 8081:8081 --name demo --link tz_mysql:tz_mysql tz-docker-demo:0.0.1
命令解析
--rm 运行完删除容器
-p 端口映射
--name 本镜像名称
--link tz_mysql 第一个参数为mysql的docker镜像名称,tz_mysql 第二个参数为别名,此处和yml文件中连接mysql的地址保持一致
tz-docker-demo:0.0.1 这个为我们刚刚build的镜像名称
11.好了,docker部署springboot项目就是这么简单,下面看一下成功
浏览器输入 http://localhost:8081/boot/getUserInfo
显示
springboot连接容器内mysql_docker部署springboot项目,连接mysql容器相关推荐
- 权限管理系统demo(springboot+elementUI)内附部署到云服务器步骤
目录 前言 环境和软件 目录结构 项目截图 购买云服务器 宝塔Linux面板(快速搭建) 部署项目到服务器上 安装软件 修改配置文件 生成jar包 上传jar包 打包前端代码 上传dist文件内容 配 ...
- k8s springboot 文件_用Kubernetes部署Springboot或Nginx,也就一个文件的事
1 前言 经过<Maven一键部署Springboot到Docker仓库,为自动化做准备>,Springboot的Docker镜像已经准备好,也能在Docker上成功运行了,是时候放上Ku ...
- docker部署django项目、mysql主从搭建、django实现读写分离
目录 docker部署django项目 1.1 基于python基础镜像 将本地django项目打包并发到远程服务器上 将服务器上的.zip django项目解压 部署的具体流程 1.2 基于dock ...
- Docker容器技术与应用(项目2 Docker容器安装和使用)
项目2 Docker容器安装和使用 下面重点介绍Docker的安装,镜像Image.镜像仓库Registry和容器Container的使用和管理. 图2.1 Docker镜像.容器和仓库之间的主要操作 ...
- 验证docker容器相当轻量级Linux运行环境,每个容器内有属于自己的文件系统,容器之间相互隔离
一.docker的三个重要概念 1.镜像:打包项目带上环境,即镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的配置参数.镜像 ...
- docker容器内访问外部mysql_详解Docker容器内应如何访问本机(宿主机)
概述 当我们Docker内应用需要访问宿本机的数据库,如何访问.使用127.0.0.1肯定是不行的,因为这个在Docker容器里面指的是容器本身.所以,需要走其他渠道进行解决. 下面几种办法,根据操作 ...
- docker jdk mysql_docker部署springboot前后端分离项目(jdk+jar包+mysql+redis+nginx)(示例代码)...
jdk1.8,dockerfile文件 1.vim jdk-dockerfile ? FROM centos:7 MAINTAINER sinvie.cn WORKDIR /usr RUN mkdir ...
- css 容器内 div 底部,CSS:在div容器的底部放置一個div容器
My intention is to place a div-container inside a div-container, but it isn't working atm. My div-co ...
- docker容器内开启22 ssh_细述docker容器中创建SSH服务镜像
基于commit 命令 方式创建 docker的安装 [root@test01 ~]# yum install docker [root@test01 ~]# systemctl enable doc ...
最新文章
- HDU2682(最小生成树)
- R语言ggplot2可视化自定义可视化结果的背景色(background color)实战:改变整个画板(panel)的背景色、改变图像(plot)区域的背景色
- Python2 文件I/O
- Linux内核spin_lock与spin_lock_irq分析
- 单步调试学习NgRx createSelector 工具函数的使用方式
- zabbix2.2升级到zabbix3.0.2
- wps中图片怎么居中_wps图片怎么添加推动声
- Mysql5.5 慢查询 trace的配置(转,针对5.5)
- ECMAScript 6学习总结(2)——ECMAScript 6常用方法总结
- 解决element-ui中表格行点击事件和表格单元格点击事件冲突的问题
- Android透明字体画法
- python画图可以用的画图库合集以及选择建议。
- 编译caffe2遇到的坑
- 【题解】洛谷P1328[NOIP2014]生活大爆炸版石头剪刀布 模拟
- java unbox_Java中Auto Box/Unbox容易踩到的“坑”,Integer
- 搜狗微信临时链接的转换
- win7mysql5.7.25安装教程_win7下MySql 5.7安装配置方法图文教程
- 一维连续型随机变量函数的分布例题(一)
- CCF-201709-2(公共钥匙盒)
- 【教程】记录:python基础爬虫代码(下载妹子福利图片)
热门文章
- 计算机ftp无法找到启动路径,filezilla出现路径错误导致无法启动怎么办?filezilla无法启动的解决方法...
- JavaScript学习笔记(4)
- python报错:ModuleNotFoundError: No module named cv2.cv2(bug不能加英文引号)
- python PyQt5 Signal类 (Signal类提供了一种以pythonic方式声明和连接Qt信号的方法)(connect()、disconnect()、emit())
- 20200314 SQ Intel Realsense D435 USB 线长、转接线个数测试数据表
- python continue语句的用法(跳过本次循环,不是跳出整个循环,break才是跳出整个循环)
- python 如何用指数函数拟合数据?(2020年新型冠状病毒感染人数预测)
- 卷积神经网络 全连接层(稠密层)是什么?(全连接层就是每一个结点都与上一层的所有结点相连的网络层)
- 90%的程序员都写错的算法-二分查找万能模版
- 为什么阿里巴巴开发手册中强制要求 POJO 类使用包装类型?NPE问题防范