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