前言
整理至《Spring 微服务实战(第二版)》
环境
- 需要Docker 的vm环境(安装 Docker Desktop 即可)
- Spring Boot
- Maven 插件支持
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- This plugin is used to create a docker image and publish the image to docker hub-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
<executions>
<execution>
<id>default</id>
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
分类
命令行以docker
打头的属于原生docker支持
命令行以mvn
打头的属于maven 集成 docker 后的打包能力,其中还需要docker的规范支持
- Dockerfile
用于自动完成镜像创建过程
- docker-compose.yml > 可以将多个容器作为一个服务运行
可以模拟不同的环境,如书中的PostgreSQL数据源环境。
构建docker镜像
mvn clean package dockerfile:build # 确保引入dockerfile-maven-plugin插件
运行docker镜像
docker-compose -f docker/docker-compose.yml up #
随笔
docker-compose
的好处:
- 对于数据库这种体积稍大的环境也能在docker中央仓库找到镜像,以声明式的方式构建到自己的环境中去(服务自己微服务的镜像)
- 可以让自己多个容器(一个dockerfile声明一个容器)编排在一起,如环境变量的断言 :
licensingservice:
image: ostock/licensing-service:0.0.2-SNAPSHOT
depends_on:
database:
condition: service_healthy
configserver:
condition: service_started