美文网首页
docker-compose构建部署springboot项目

docker-compose构建部署springboot项目

作者: 阿沐木 | 来源:发表于2019-07-20 22:07 被阅读0次

    1、首先确保你的服务器上已经安装docker和docker-compose(要分别安装,不是同一个东西)

    • 我这里已经安装docker,版本如下: image.png

    2、在服务器创建bootapp文件夹

    2.1、创建docker-compose.yaml文件

    version: "3"
    services:
      web:
        hostname: test
        build: ./web/       #需要构建的Dockerfile文件
        ports:
        - "38000:8080"      #容器端口映射到宿主机的端口
        environment:
          username: lzz    #springboot项目中连接数据库需要的环境变量
          password: lzz      # mysql:3306 这里不能写localhost:3306,应该写下面这种,mysql对应的是服务名称
          url: jdbc:mysql://mysql:3306/library?useUnicode=true&characterEncoding=utf8
        depends_on:      #web服务依赖mysql服务,要等mysql服务先启动
        - mysql
    
      mysql:
        image: mysql:latest
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: library
          MYSQL_USER: lzz
          MYSQL_PASSWORD: lzz
        ports:
        - "3306:3306"
        volumes:
        - ./db:/docker-entrypoint-initdb.d      #初始化数据库
    
    

    2.2、文件夹下的文件

    image.png

    2.3、下文件夹

    image.png

    springbootdemo-0.0.1-SNAPSHOT.jar :springboot项目对应的jar包

    3、Dockerfile :构建镜像的文件

    FROM maven:3.5-jdk-8  #指定jdk镜像
    VOLUME /tmp
    ADD springbootdemo-0.0.1-SNAPSHOT.jar app.jar
    ENTRYPOINT    ["java","-jar","/app.jar"]
    

    4、db文件夹

    image.png

    4.1 部分sql代码

    CREATE DATABASE  IF NOT EXISTS `library` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */;
    USE `library`;
    DROP TABLE IF EXISTS `arrive_reminder`;
    SET @saved_cs_client     = @@character_set_client;
    SET character_set_client = utf8;
    SET character_set_client = @saved_cs_client;
    DROP TABLE IF EXISTS `book`;
    CREATE TABLE `book` (
      `book_id` int(11) NOT NULL AUTO_INCREMENT,
      `ISBN` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
      `location` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
      `state` int(11) NOT NULL,
      `operator` int(11) NOT NULL,
      PRIMARY KEY (`book_id`),
      UNIQUE KEY `BID_UNIQUE` (`book_id`),
      KEY `op2_idx` (`operator`),
      KEY `bo_idx` (`ISBN`),
      CONSTRAINT `bo` FOREIGN KEY (`ISBN`) REFERENCES `booklist` (`ISBN`) ON DELETE CASCADE ON UPDATE NO ACTION,
      CONSTRAINT `op2` FOREIGN KEY (`operator`) REFERENCES `manager` (`manager_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=176 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    

    5、springboot中使用docker-compose.yaml环境变量的值

    application.yml

    spring:
      thymeleaf:
        cache: false
        prefix: classpath:/templates/
        suffix: .html
        encoding: UTF-8
        mode: HTML5
      datasource:
            name: test
            url: ${url}
            username: ${username}
            password: ${password}
            # 使用druid数据源
            type: com.alibaba.druid.pool.DruidDataSource
            driver-class-name: com.mysql.jdbc.Driver
      mail:
        host: smtp.163.com
        username: managebooks@163.com
        password: 654321bm
        properties:
          mail.smtp.auth: true
          mail.smtp.starttls.enable: true
          mail.smtp.starttls.required: true
    
    mybatis:
      mapper-locations: classpath:Mapper/*.xml
      type-aliases-package: cn.lightina.managebooks.pojo
      configuration:
        map-underscore-to-camel-case: true
    
    mail:
      fromMail:
        addr: managebooks@163.com
    
    

    6、 注意

    image.png

    7、部署成功,访问一下

    image.png

    相关文章

      网友评论

          本文标题:docker-compose构建部署springboot项目

          本文链接:https://www.haomeiwen.com/subject/vhwvlctx.html