使用 maven插件构建 Docker镜像

* 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中都有这么一段:


        com.spotify
        docker-maven-plugin
        1.0.0
        
        
          liumapp/${project.artifactId}:${project.version}
          
          java:8
          
          ["java", "-jar", "/${project.build.finalName}.jar"]
          
            
              /
              ${project.build.directory}
              ${project.build.finalName}.jar
            
          
        
      

我们在/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 文件
使用 maven插件构建 Docker镜像_第1张图片

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
使用 maven插件构建 Docker镜像_第2张图片 修改成 localhost

你可能感兴趣的:(maven,docker,docker-compose)