SpringBoot IDEA-Docker遠程部署

前期準(zhǔn)備工作

1、版本說明

  • idea 2019
  • docker 19.03.1
  • ubunt 18

2、安裝docker 參照

http://www.itdecent.cn/nb/39832904

3、配置docker遠程連接端口

# 登錄遠程服務(wù)器 修改 當(dāng)前操作是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
# 重啟服務(wù)
systemctl restart docker.service
# 查看端口是否開啟
netstat -nlpt

注: 如果是云服務(wù)器記得打開開啟設(shè)置的端口

4、 Idea安裝插件

image

5、連接遠程docker

image

6、docker圖形界面

image

創(chuàng)建SpringBoot項目

1、整體工程結(jié)構(gòu)圖

image

2、pom.xml

    <properties>
        <java.version>1.8</java.version>
        <mybatis-plus.starter.version>2.1.5</mybatis-plus.starter.version>
        <mybatis.starter.version>2.0.1</mybatis.starter.version>
        <druid.starter.version>1.1.20</druid.starter.version>
        <mybatis-plus.starter.version>3.2.0</mybatis-plus.starter.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.starter.version}</version>
        </dependency>
        <!--  添加MP依賴-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

3、application.yml

spring:
  datasource:
    #    # 初始化線程池數(shù)量  最大數(shù)  最小數(shù)
    # 修改成你自己的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
    # 驅(qū)動包 8.0以上的配置
    # =========== durid 連接池配置===========
    hikari:
      # 是客戶端等待連接池連接的最大毫秒數(shù)
      connection-timeout: 30000
      # 是允許連接在連接池中空閑的最長時間
      minimum-idle: 10
      # 配置最大池大小
      maximum-pool-size: 65
      # 是允許連接在連接池中空閑的最長時間(以毫秒為單位)
      idle-timeout: 60000
      # 池中連接關(guān)閉后的最長生命周期(以毫秒為單位)
      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
      #駝峰下劃線轉(zhuǎn)換
      table-underline: true
      logic-delete-value: 1
      logic-not-delete-value: 0
  configuration:
    #配置返回數(shù)據(jù)庫(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、創(chuàng)建Entity

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

6、創(chuàng)建DiscountMapper

# 繼承 Mytabis Plus的基類
public interface DiscountMapper extends BaseMapper<Discount> {
}

7、創(chuàng)建OrderServiceImpl

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

8、創(chuàng)建OrderController

@RestController
@RequestMapping("/order")
public class OrderController {
    @Resource
    OrderService orderService;
    @RequestMapping("/discounts/{page}/{size}")
    public IPage<Discount> 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
      # 設(shè)置數(shù)據(jù)庫的編碼
      --character-set-server=utf8mb4
      # 設(shè)置數(shù)據(jù)庫默認的排序方式
      --collation-server=utf8mb4_general_ci
      # 解決低版本不允許時間字段 not null
      --explicit_defaults_for_timestamp=true
      # Linux  表名區(qū)分大小寫   1 表示不區(qū)分大小寫
      --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:
      # 初始化數(shù)據(jù)庫密碼
      MYSQL_ROOT_PASSWORD: root
      # 初始化數(shù)據(jù)庫的名字
      MYSQL_DATABASE: db_order
      # 時區(qū)
      TZ: Asia/Shanghai
  app:
    container_name: app-container
    build: .
    restart: always
    ports:
      - 9100:8080
    depends_on:
      - app-db

10、Dockerfile

官方鏡像都是基于openjdk所以自己造了一個

FROM ubuntu
# java相關(guān)變量名
# 根據(jù)你自己的版本修改成對應(yīng)的
ENV java jdk-8u221-linux-x64.tar.gz
ENV jdk jdk1.8.0_221
ADD   ./${java}    /usr/local/java/
# 設(shè)置java環(huán)境
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容器的數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)

-- ----------------------------
-- 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容