Docker实战

项目发布(按需取)

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
  • application-prod.yml
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.测试网站

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值