* 1.使用 maven插件构建 Docker镜像*
插件名称:docker-maven-plugin
官方网址:
https://github.com/spotify/docker-maven-plugin
2.准备工作
从 GitHub 中拉去demo :
https://github.com/haoxiaoyong1014/docker-compose-demo
本项目是使用 spring Cloud 构建,根目录中有 ./build-image.sh 以及 ./rm-images.sh shell脚本,分别为
构建镜像,和删除镜像,另外还有 docker-compose.yml我们后续介绍
3.pom.xml
首先我们拿到 demo 可以看到没个 pom.xmll中都有这么一段:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--镜像的名称-->
<imageName>liumapp/${project.artifactId}:${project.version}</imageName>
<!--依赖的镜像-->
<baseImage>java:8</baseImage>
<!--执行生成的 jar-->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
我们在/build-image.sh中看到 mvn clean package docker:build 这句话,也就是说,想要生成镜像,
执行命令:
mvn clean package docker:build
这样就构建成功了
一般情况下启动镜像命令:
docker run -p youpRoject端口:youpRoject端口 RojectName
例如:
docker run -p 8081:8081 docker-compose-demo
(这句话只是例子,不适应本项目)
4.使用 docker-compose 编排镜像
上面我们提到 在项目中有 docker-compose.yml 文件,
docker 提供了一个命令行工具 docker-compose 帮助完成镜像的编排, 要使用 docker-compose , 需要先编写一个 docker-compose.yml 文件
docker-compose.yml文件的 image :镜像名称要和 pom.xml 中的镜像的名称保持一致,
restart: 从新启动 (因为有依赖项,例如要链接 docker-compose-eureka,因为是同时启动,有可能连不到docker-compose-eureka,会一直尝试去链接)直到链接成功.
container_name:容器名称
hostname: 映射 ip
ports: 宿主机端口(本机):容器端口
depends_on: 依赖项
volumes: 对文件的读写进行持久化, -/本机文件:/容器文件,将容器文件持久化到本机
执行命令:
docker-compose up -d
生成容器
docker-compose dowm 删除容器
输入:
http://localhost:8081/write
打印: write success , the file path is : /tmp/demo-api-a.txt 写入成功,并持久化到本地.
注意 : 本项目本地是跑不起来的,要使本地跑起来请修改:各个子项目中的 application.yml
修改成 localhost