使用 maven插件构建 Docker镜像

  • Post author:
  • Post category:其他



* 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



版权声明:本文为haoxiaoyong1014原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。