SpringBoot IDEA-Docker远程部署

前期准备工作

1、版本说明

  • idea 2019
  • docker 19.03.1
  • ubunt 18

2、安装docker 参照

https://www.jianshu.com/nb/39832904

3、配置docker远程连接端口

# 登录远程服务器 修改 当前操作是ubuntu18
vim /lib/systemd/system/docker.service
# 修改ExecStart这行
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock
# 重新加载配置文件
systemctl daemon-reload
# 重启服务
systemctl restart docker.service
# 查看端口是否开启
netstat -nlpt

注: 如果是云服务器记得打开开启设置的端口

4、 Idea安装插件

image

5、连接远程docker

image

6、docker图形界面

image

创建SpringBoot项目

1、整体工程结构图

image

2、pom.xml

    
        1.8
        2.1.5
        2.0.1
        1.1.20
        3.2.0
    
    
        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            mysql
            mysql-connector-java
            runtime
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybatis.starter.version}
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            ${mybatis-plus.starter.version}
        
        
            org.projectlombok
            lombok
            true
        
    

3、application.yml

spring:
  datasource:
    #    # 初始化线程池数量  最大数  最小数
    # 修改成你自己的ip地址
    url: jdbc:mysql://你自己的IP地址:3308/db_order?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 驱动包 8.0以上的配置
    # =========== durid 连接池配置===========
    hikari:
      # 是客户端等待连接池连接的最大毫秒数
      connection-timeout: 30000
      # 是允许连接在连接池中空闲的最长时间
      minimum-idle: 10
      # 配置最大池大小
      maximum-pool-size: 65
      # 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
      idle-timeout: 60000
      # 池中连接关闭后的最长生命周期(以毫秒为单位)
      max-lifetime: 600000
      # 配置从池返回的连接的默认自动提交行为。默认值为true。
      auto-commit: true
      # 连接池的名称
      pool-name: MyHikariCP
      leak-detection-threshold: 5000
mybatis-plus:
  mapper-locations: classpath:/mappers/**/*.xml
  typeAliasesPackage: com.vp.docker.*.entity
  global-config:
    db-config:
      #主键类型
      id-type: auto
      #驼峰下划线转换
      table-underline: true
      logic-delete-value: 1
      logic-not-delete-value: 0
  configuration:
    #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
    map-underscore-to-camel-case: true
    cache-enabled: false
server:
  port: 8080
  servlet:
    context-path: /api

4、编写DockerDemoApplication

@SpringBootApplication
@MapperScan("com.vp.docker.mapper")
public class DockerDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DockerDemoApplication.class, args);
    }
}

5、创建Entity

@Data
@TableName("t_discount")
public class Discount {
    @TableId(type= IdType.AUTO)
    private Integer id;
    private BigDecimal discount;
    private String name;
}

6、创建DiscountMapper

# 继承 Mytabis Plus的基类
public interface DiscountMapper extends BaseMapper {
}

7、创建OrderServiceImpl

@Service
public class OrderServiceImpl implements OrderService {
    @Resource
    DiscountMapper discountMapper;
    @Override
    public IPage getDiscountList(int page, int size) throws Exception {
        IPage pageDiscount = discountMapper.selectPage(new Page<>(page, size), null);
        return pageDiscount;
    }
}

8、创建OrderController

@RestController
@RequestMapping("/order")
public class OrderController {
    @Resource
    OrderService orderService;
    @RequestMapping("/discounts/{page}/{size}")
    public IPage discount(@PathVariable int page, @PathVariable int size) throws Exception {
        return orderService.getDiscountList(page, size);
    }
}

9、docker-compose.yml

version: "3.7"
services:
  app-db:
    container_name: db-order
    image: mysql:5.7.22
    volumes:
      - /opt/mysql/data:/var/lib/mysql
    ports:
      - "3308:3306"
    restart: always
    command:
      #  防止低版本的连接客服报错的问题
      --default-authentication-plugin=mysql_native_password
      # 设置数据库的编码
      --character-set-server=utf8mb4
      # 设置数据库默认的排序方式
      --collation-server=utf8mb4_general_ci
      # 解决低版本不允许时间字段 not null
      --explicit_defaults_for_timestamp=true
      # Linux  表名区分大小写   1 表示不区分大小写
      --lower_case_table_names=1
      # 如果报错 去掉该行,主要是解决5.7group by语法错误的情况
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    environment:
      # 初始化数据库密码
      MYSQL_ROOT_PASSWORD: root
      # 初始化数据库的名字
      MYSQL_DATABASE: db_order
      # 时区
      TZ: Asia/Shanghai
  app:
    container_name: app-container
    build: .
    restart: always
    ports:
      - 9100:8080
    depends_on:
      - app-db

10、Dockerfile

官方镜像都是基于openjdk所以自己造了一个

FROM ubuntu
# java相关变量名
# 根据你自己的版本修改成对应的
ENV java jdk-8u221-linux-x64.tar.gz
ENV jdk jdk1.8.0_221
ADD   ./${java}    /usr/local/java/
# 设置java环境
ENV JAVA_HOME /usr/local/java/${jdk}
ENV CLASSPATH $JAVA_HOME/lib;$JAVA_HOME/jre/lib
ENV PATH $PATH:$JAVA_HOME/bin
# 上级目录的target
COPY ./target/*.jar app.jar
# 启动容器的时候 启动tomcat
ENTRYPOINT ["java","-jar","app.jar"]

编辑配置

image

[图片上传失败...(image-66dc5-1568986386529)]
image

11、将springboot工程打包

mvn install -Dmaven.test.skip=true

**或者IDEA工具打包

**
image

12、点击运行

image

13、连接Docker容器的数据库导入数据

-- ----------------------------
-- Table structure for t_discount
-- ----------------------------
DROP TABLE IF EXISTS `t_discount`;
CREATE TABLE `t_discount` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `discount` decimal(9,1) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_discount
-- ----------------------------
BEGIN;
INSERT INTO `t_discount` VALUES (1, 9.5, '95折');
INSERT INTO `t_discount` VALUES (2, 8.0, '8折');
COMMIT;

14、在浏览器输入

image

你可能感兴趣的:(SpringBoot IDEA-Docker远程部署)