Dorcker发布

1.--拉取mysql8的镜像

docker pull mysql:8


2.--查看

docker images


3.-- 利用镜像创建mysql8的容器   本机端口为 3308,   解决编码问题

docker run  -p 3308:3306 --name ycmysql8 -e MYSQL_ROOT_PASSWORD=a -d  mysql:8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci


4.--查看容器是否启动

docker ps -a


5.--进入容器     -it 以交互式终端进入容器 

docker exec -it ycmysql8 /bin/bash


6.--登录mysql

mysql -uroot -pa


7.--创建数据库

create database yc108109res  default character set = 'utf8';
show databases;

8.idea 代码修改

(1)测试类上加@ActiveProfiles("init"),多个测试类运用测试套件

package com.xrl.springbootdcitem;


import com.xrl.dao.ResFoodDao;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;

/**
 * @author shkstart
 * @create 2022-02-27 21:04
 */
//@RunWith(SpringRunner.class)
////@SpringBootApplication
//@MapperScan("com.xrl.mappers")
@SpringBootTest
@ActiveProfiles("init")
//@RunWith(Suite.class)
/**
 * 测试套件
 */
//@Suite.SuiteClasses(SpringbootdcitemApplicationTests.class)
public class ResFoodDaoTest {
    @Autowired
    @Qualifier("resFoodDaoItem")
    private ResFoodDao resFoodDao;

    @Test
    public void findAllFoods() {
        System.out.println(resFoodDao.findAllFoods());
    }
}

(2)application-prod 是在docker容器中访问docker容器中的mysql,

需要用docker中的地址172.20.0.2:端口

server:
  port: 8084
  servlet:
    session.timeout: 6000
    contextpath: /

logging:
  level:
    root: debug
    com:
      yc: debug
    org:
      springframework: debug
  file:
    name: /tmp





spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://172.20.0.2:3306/ycres?serverTimezone=UTC
    username: root
    password: a
    type: com.alibaba.druid.pool.DruidDataSource

    # 初始化大小,最小,最大
    initial-size: 5
    min-idle: 5
    max-active: 20
    # 配置获取连接等待超时的时间
    max-wait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒
    time-between-eviction-runs-millis: 60000
    # 配置一个连接在池中最小生存时间
    min-evictable-idle-time-millis: 300000
    validation-query: SELECT 1 FROM sys_user
    test-while-idle: true
    test-on-borrow: false
    test-on-return: false
    # 打开 PSCache,并且指定每个连接上 PSCache 的大小
    pool-prepared-statements: true
    max-pool-prepared-statement-per-connection-size: 20
    # 配置监控统计拦截的 Filter,去掉后监控界面 SQL 无法统计,wall 用于防火墙
    filters: stat,wall
    # 通过 connection-properties 属性打开 mergeSql 功能;慢 SQL 记录
    connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
##    # 配置 DruidStatFilter
#    web-stat-filter:
#      enabled: true
#      url-pattern: /*
#      exclusions:  .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
#    # 配置 DruidStatViewServlet
#    stat-view-servlet:
#      url-pattern: /druid/*
#      # IP 白名单,没有配置或者为空,则允许所有访问
#      allow: 127.0.0.1
#      # IP 黑名单,若白名单也存在,则优先使用
#      deny: 192.168.31.253
#      # 禁用 HTML 中 Reset All 按钮
#      reset-enable: false
#      # 登录用户名/密码
#      login-username: root
#      login-password: 123


mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

debug:
  false

application是用来访问docker容器映射出来的地址所以用local host:映射端口

server:
  port: 8080
  servlet:
    session.timeout: 60000
    contextpath: /

logging:
  level:
    root: debug
    com:
      yc: debug
    org:
      springframework: debug
  file:
    path: /tmp       #日志文件存到 /tmp目录下

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ycres?serverTimezone=UTC
    username: root
    password:
    driver-class-name: com.mysql.cj.jdbc.Driver


    type: com.alibaba.druid.pool.DruidDataSource

    # 初始化大小,最小,最大
    initial-size: 5
    min-idle: 5
    max-active: 20
    # 配置获取连接等待超时的时间
    max-wait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒
    time-between-eviction-runs-millis: 60000
    # 配置一个连接在池中最小生存时间
    min-evictable-idle-time-millis: 300000
    #validation-query: SELECT 1 FROM sys_user
    test-while-idle: true
    test-on-borrow: false
    test-on-return: false
    # 打开 PSCache,并且指定每个连接上 PSCache 的大小
    pool-prepared-statements: true
    max-pool-prepared-statement-per-connection-size: 20
    # 配置监控统计拦截的 Filter,去掉后监控界面 SQL 无法统计,wall 用于防火墙
    filters: stat,wall
    # 通过 connection-properties 属性打开 mergeSql 功能;慢 SQL 记录
    connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
##    # 配置 DruidStatFilter
#    web-stat-filter:
#      enabled: true
#      url-pattern: /*
#      exclusions:  .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
#    # 配置 DruidStatViewServlet
#    stat-view-servlet:
#      url-pattern: /druid/*
#      # IP 白名单,没有配置或者为空,则允许所有访问
#      allow: 127.0.0.1
#      # IP 黑名单,若白名单也存在,则优先使用
#      deny: 192.168.31.253
#      # 禁用 HTML 中 Reset All 按钮
#      reset-enable: false
#      # 登录用户名/密码
#      login-username: root
#      login-password: 123




mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启SQL语句打印

(3)创建Dockerfile文件到项目目录下

# 添加 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"]

 

9.打包程序

pom.xml

 

 

 

<plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.4</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>javastack/${project.name}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                    <dockerfile>Dockerfile</dockerfile>
                </configuration>

            </plugin>

        </plugins>

10.  桥接

docker network create -d bridge ycnetwork

docker network connect ycnetwork mysql

docker network connect ycnetwork res

docker network inspect ycnetwork

11.测试

http://localhost:8080/

注意点:

每次重启docker  bridge网络中 容器的地址可能改变.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值