• spring boot应用打包成docker镜像和服务的编排


            上一次docker的基本介绍,对与docker有了初步认识,接下来,我们就docker怎么打包我们的jar包成镜像,并且对于多个容器之间的

    容器服务编排。

           默认我采用的maven项目,使用的是docker的打包插件。插件的引用如下

    <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.12</version>
    <executions>
    <execution>
    <id>build-image</id>
    <phase>package</phase>
    <goals>
    <goal>build</goal>
    </goals>
    </execution>
    </executions>
    <configuration>
    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
    <baseImage>java</baseImage>
    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar", "--spring.profiles.active=docker"]]</entryPoint>
    <resources>
    <resource>
    <targetPath>/</targetPath>
    <directory>${project.build.directory}</directory>
    <include>${project.build.finalName}.jar</include>
    </resource>
    </resources>
    </configuration>
    </plugin>

           框架我治理采用的spring boot ,看到配置文件里面需要一个docker环境的配置,所以要新建一个配置文件为application-docker.yml,,

    加入如下配置:

    spring:
      datasource:
        url: jdbc:mysql://${DB_HOST}:3306/${DB_SCHEMA}?useUnicode=true&characterEncoding=utf-8
        username: root
        password: root

            然后点击package按钮,如下图所示,我用的是Idealj开发工具。

                          

         完成后,target目录中会出现如下目录:

         

           然后用docker images可以看到生成的镜像:

     

           也可以运行镜像,在这里就不说了.

          上面说的是但容器的运行流程,那么多容器的启动,难道要一个一个启动? 有没有更好的方式启动多个容器,答案是有的,接下来我要讲的是docker-compose这个东西,翻译成汉语是“服务编排”。

           docker-compse这个其实你在安装好docker后,这个会默认安装好的。

          默认本届安装好了 docker-compose:

          在项目的根目录新建一个名字为docker-compose.yml的文件。  填入一下配置。

    version: '3'
    services:
      mysql:
         image: mysql
         ports:
           - "3306:3306"
         restart: always
         environment:
           - MYSQL_ROOT_PASSWORD=root
         volumes:
           - ./mysql:/docker-entrypoint-initdb.d
           -  ./software/mysql:/etc/mysql/conf.d
           - ./software/mysql/mysqldata:/var/lib/mysql
    
      gateway:
        image: cloud/gateway
        ports:
          - "8081:8081"
        links:
          - mysql
    
      userService:
        image: cloud/user
        ports:
          - "8071:8071"
        links:
          - mysql

         启动命令: docker-compse up mysql 先启动的mysql

                         docker-compse up 启动所有的应用。

         到此,就今天的全部了,接下来还是回到研究代码的层面,这些属于运维的方面的了,但是我不觉得它是纯的运维,

    因为分布式服务开发,本地开发时候非常麻烦,测试一个接口,同时要启动好几个服务。所以我觉得docker这个可以
    加快部署的便捷的工具,可以更加好加快帮助开发的效率。

      

              

  • 相关阅读:
    今日大跌!
    web servers
    ASP.NET2.0缓存机制
    赚钱的总是史玉柱?
    asp.net速查手册
    为伊消得人憔悴,我的2007成就难有,内心彷徨
    success
    失守4600点
    Linux下chkconfig命令详解
    FTP批处理下载木马
  • 原文地址:https://www.cnblogs.com/xjz1842/p/8297557.html
Copyright © 2020-2023  润新知