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这个可以
加快部署的便捷的工具,可以更加好加快帮助开发的效率。

  

          

原文地址:https://www.cnblogs.com/xjz1842/p/8297557.html