300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用Maven 插件构建docker 镜像和推送仓库

使用Maven 插件构建docker 镜像和推送仓库

时间:2018-09-05 15:29:21

相关推荐

使用Maven 插件构建docker 镜像和推送仓库

案例 spring cloud eureka server 构建 docker 镜像 和推送仓库

fox.风

项目 pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.foxwho</groupId><artifactId>fox-eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>fox-eureka-server</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.BUILD-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Finchley.BUILD-SNAPSHOT</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><executions><!--执行 mvn package 时 自动 执行 mvn docker:build--><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--推送到私有仓库--><!-- <imageName>localhost:5000/fox/fox-eureka-server</imageName> --><!--本地--><imageName>fox/fox-eureka-server</imageName><imageTags><imageTag>0.0.1</imageTag><!--可以指定多个标签--><imageTag>latest</imageTag></imageTags><!--覆盖已存在的标签 镜像--><forceTags>true</forceTags><!--使用pom 配置--><baseImage>java</baseImage><entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint><!--使用pom 配置 END--><!--使用 Dockerfile--><!--<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>--><!--使用 Dockerfile END--><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin></plugins></build><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><snapshots><enabled>true</enabled></snapshots></repository><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><snapshots><enabled>true</enabled></snapshots></pluginRepository><pluginRepository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>

构建命令 及启动docker 镜像

mvn package或mvn clean package

启动docker 镜像

docker run -d -p 1111:1111 fox/fox-eureka-server:0.0.1 --name fox-eureka-server:0.0.1

1111 是 fox-eureka-server 内的端口

其他说明

自动构建docker 镜像配置主要在plugin中的com.spotify

说明:

合并构建命令

<execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution>

此配置 主要是 执行mvn package时 自动 执行mvn docker:build,如果没有此配置那么要执行

mvn pakage docker:build或mvn clean pakage docker:build

同时推送镜像到仓库

推送远程仓库

在MAVEN 的全局配置文件settings.xml加入或修改

<servers><server><id>docker-hub</id><username>docker Hub 的用户名</username><password>docker Hub 的密码</password><configuration><email>docker Hub 的邮箱</email></configuration></server></servers>

接着修改pom.xml中的plugincom.spotifyconfiguration元素内增加

<!--就是settings.xml 中 server.id --><serverId>docker-hub</serverId>

执行命令

mvn clean package -DpushImage

注意:pushImage标识,标识推送镜像标识,没有此标识,则不推送

推送到本地仓库

本地仓库很简单

修改pom.xml中的plugincom.spotifyconfiguration.imageName元素增加 本地地址和端口即可

例如:本地 仓库地址及端口为http://localhsot:5000

imageName

<imageName>fox/fox-eureka-server</imageName>

修改为

<imageName>localhost:5000/fox/fox-eureka-server</imageName>

执行命令

mvn clean package docker:build -DpushImage

注意:pushImage标识,标识推送镜像标识,没有此标识,则不推送

代码地址:/foxiswho/example-java-spring-cloud/tree/master/fox-eureka-server

docker compose 编排

修改所有微服务配置eureka.client.serviceUrl.defaultZone(fox-eureka-server除外):

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

注意,以上修改完成后,要重新构建及推送到仓库

docker-compose.yml文件如下

version : "2"services :peer1:image:fox/fox-eureka-server:0.0.1ports:- "1111:1111"environment:- spring.profiles.active=peer1peer2:image:fox/fox-eureka-server:0.0.1ports:- "1112:1112"environment:- spring.profiles.active=peer2service-provider:image:fox/fox-eureka-service-provider:0.0.1feign-service--consumer:image:fox/fox-eureka-feign-service-consumer:0.0.1api-gateway:image:fox/api-gateway:0.0.1config-eureka-server:image:fox/config-eureka-server:0.0.1config-eureka-client:image:fox/config-eureka-client:0.0.1fox-dashboard:image:fox/fox-dashboard:0.0.1

注意,这里只是一个 docker compose 案例,具体需要开启哪些端口需要 自己去配置

最后执行命令

docker-compose up

打开浏览器 网址http://localhost:1111即可看到效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。