入手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容器相关推荐

  1. 权限管理系统demo(springboot+elementUI)内附部署到云服务器步骤

    目录 前言 环境和软件 目录结构 项目截图 购买云服务器 宝塔Linux面板(快速搭建) 部署项目到服务器上 安装软件 修改配置文件 生成jar包 上传jar包 打包前端代码 上传dist文件内容 配 ...

  2. k8s springboot 文件_用Kubernetes部署Springboot或Nginx,也就一个文件的事

    1 前言 经过<Maven一键部署Springboot到Docker仓库,为自动化做准备>,Springboot的Docker镜像已经准备好,也能在Docker上成功运行了,是时候放上Ku ...

  3. docker部署django项目、mysql主从搭建、django实现读写分离

    目录 docker部署django项目 1.1 基于python基础镜像 将本地django项目打包并发到远程服务器上 将服务器上的.zip django项目解压 部署的具体流程 1.2 基于dock ...

  4. Docker容器技术与应用(项目2 Docker容器安装和使用)

    项目2 Docker容器安装和使用 下面重点介绍Docker的安装,镜像Image.镜像仓库Registry和容器Container的使用和管理. 图2.1 Docker镜像.容器和仓库之间的主要操作 ...

  5. 验证docker容器相当轻量级Linux运行环境,每个容器内有属于自己的文件系统,容器之间相互隔离

    一.docker的三个重要概念 1.镜像:打包项目带上环境,即镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的配置参数.镜像 ...

  6. docker容器内访问外部mysql_详解Docker容器内应如何访问本机(宿主机)

    概述 当我们Docker内应用需要访问宿本机的数据库,如何访问.使用127.0.0.1肯定是不行的,因为这个在Docker容器里面指的是容器本身.所以,需要走其他渠道进行解决. 下面几种办法,根据操作 ...

  7. 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 ...

  8. 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 ...

  9. docker容器内开启22 ssh_细述docker容器中创建SSH服务镜像

    基于commit 命令 方式创建 docker的安装 [root@test01 ~]# yum install docker [root@test01 ~]# systemctl enable doc ...

最新文章

  1. HDU2682(最小生成树)
  2. R语言ggplot2可视化自定义可视化结果的背景色(background color)实战:改变整个画板(panel)的背景色、改变图像(plot)区域的背景色
  3. Python2 文件I/O
  4. Linux内核spin_lock与spin_lock_irq分析
  5. 单步调试学习NgRx createSelector 工具函数的使用方式
  6. zabbix2.2升级到zabbix3.0.2
  7. wps中图片怎么居中_wps图片怎么添加推动声
  8. Mysql5.5 慢查询 trace的配置(转,针对5.5)
  9. ECMAScript 6学习总结(2)——ECMAScript 6常用方法总结
  10. 解决element-ui中表格行点击事件和表格单元格点击事件冲突的问题
  11. Android透明字体画法
  12. python画图可以用的画图库合集以及选择建议。
  13. 编译caffe2遇到的坑
  14. 【题解】洛谷P1328[NOIP2014]生活大爆炸版石头剪刀布 模拟
  15. java unbox_Java中Auto Box/Unbox容易踩到的“坑”,Integer
  16. 搜狗微信临时链接的转换
  17. win7mysql5.7.25安装教程_win7下MySql 5.7安装配置方法图文教程
  18. 一维连续型随机变量函数的分布例题(一)
  19. CCF-201709-2(公共钥匙盒)
  20. 【教程】记录:python基础爬虫代码(下载妹子福利图片)

热门文章

  1. 计算机ftp无法找到启动路径,filezilla出现路径错误导致无法启动怎么办?filezilla无法启动的解决方法...
  2. JavaScript学习笔记(4)
  3. python报错:ModuleNotFoundError: No module named cv2.cv2(bug不能加英文引号)
  4. python PyQt5 Signal类 (Signal类提供了一种以pythonic方式声明和连接Qt信号的方法)(connect()、disconnect()、emit())
  5. 20200314 SQ Intel Realsense D435 USB 线长、转接线个数测试数据表
  6. python continue语句的用法(跳过本次循环,不是跳出整个循环,break才是跳出整个循环)
  7. python 如何用指数函数拟合数据?(2020年新型冠状病毒感染人数预测)
  8. 卷积神经网络 全连接层(稠密层)是什么?(全连接层就是每一个结点都与上一层的所有结点相连的网络层)
  9. 90%的程序员都写错的算法-二分查找万能模版
  10. 为什么阿里巴巴开发手册中强制要求 POJO 类使用包装类型?NPE问题防范