项目发布(按需取)
1.需求
- docker完成打包镜像发布到docker的全过程
- 测试时重新建所有表+插入基础数据
注意每次运行编译前先将数据库删除并重建一次, 以后这个部分应该是在本地测试库完成
2.测试代码
drop database res;
create database res default character set='utf8';
- 测试中的配置文件
- application-init.yml
server:
port: 8081
servlet:
session.timeout: 60000
contextpath: /
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启SQL语句打印
spring:
datasource:
url: jdbc:mysql://localhost:3308/res?characterEncoding=utf-8 #3306
username: root
password: a #xbzz7789
driver-class-name: com.mysql.jdbc.Driver
# type: com.alibaba.druid.pool.DruidDataSource
sql:
init:
schema-locations:
-classpath*: schema-all.sql
data-locations:
-classpath*: data-all.sql
username: root
password: a
mode: ALWAYS #*****注意它的取值
@ActiveProfiles("init")
测试套件:将多个测试用例整合到一个测试中
@RunWith(Suite.class)
@Suite.SuiteClasses({TestLog.class,TestSpringBoot.class})
3.main代码
- 首先保证ycmysql8 联接到ycnetwork的bridge
docker network connect ycnetwork ycmysql8
docker network inspect ycnetwork
- pom.xml
- application.yml
server:
port: 8081
servlet:
session:
timeout: 60000
context-path: /
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启SQL语句打印
logging:
level:
root: debug
com:
yc: debug
org:
springframework: debug
# file: #将日志写入文件中 一般使用滚动日志7.4.4
# path: d:/logstest/ #开发阶段不需要
spring:
datasource:
url: jdbc:mysql://localhost:3306/res?characterEncoding=utf-8 #3306连本机
username: root
password: xbzz7789
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#初始化大小
initialSize: 5
#最小值
minIdle: 5
#最大值
maxActive: 20
#最大等待时间,配置获取连接等待超时,时间单位都是毫秒ms
maxWait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接
timeBetweenEvictionRunsMillis: 60000
#配置一个连接在池中最小生存的时间
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,
#'wall'用于防火墙,SpringBoot中没有log4j,我改成了log4j2
filters: stat,wall,log4j2
#最大PSCache连接
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# # 配置StatFilter
# web-stat-filter:
# #默认为false,设置为true启动
# enabled: true
# url-pattern: "/*"
# exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
# #配置StatViewServlet
# stat-view-servlet:
# url-pattern: "/druid/*"
# #允许那些ip
# allow: 127.0.0.1
# login-username: admin
# login-password: 123456
# #禁止那些ip
# deny: 192.168.1.102
# #是否可以重置
# reset-enable: true
# #启用
# enabled: true
debug:
false
server:
port: 8084 #在docker容器中占用的端口
servlet:
session:
timeout: 60000
context-path: /
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启SQL语句打印
logging:
level:
root: debug
com:
yc: debug
org:
springframework: debug
file: #将日志写入文件中 一般使用滚动日志7.4.4
path: /tmp #开发阶段不需要
spring:
datasource: #上线之后发布 一定要先建立桥 记住ip
url: jdbc:mysql://172.20.0.3:3306/res?characterEncoding=utf-8 #3306连本机
username: root
password: a
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#初始化大小
initialSize: 5
#最小值
minIdle: 5
#最大值
maxActive: 20
#最大等待时间,配置获取连接等待超时,时间单位都是毫秒ms
maxWait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接
timeBetweenEvictionRunsMillis: 60000
#配置一个连接在池中最小生存的时间
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,
#'wall'用于防火墙,SpringBoot中没有log4j,我改成了log4j2
filters: stat,wall,log4j2
#最大PSCache连接
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
debug:
false
- 创建Dockerfile文件到项目目录下(生成docker镜像)
# 添加 Java 8 镜像来源
FROM java:8
# 添加参数
ARG JAR_FILE
# 添加 Spring Boot 包, JAR_FILE 参数就是从 Docker Maven 插件中指定的构建参数
ADD target/${JAR_FILE} app.jar
# 执行启动命令
ENTRYPOINT ["java","-Dspring.profiles.active=prod","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
4.docker上管理端口的暴露
5.构建 Docker 镜像
- 打包
- 等待
- 测试ycmysql8中表和数据是否生成好
6.IDEA增加docker管理插件
7.连接容器到ycmysql8所在的网桥上
- docker network connect ycnetwork res
- docker network inspect ycnetwork
8.测试网站