使用Maven 插件构建docker 镜像和推送仓库
2017-11-14 11:56
1001 查看
案例 spring cloud eureka server 构建 docker 镜像 和推送仓库
fox.风
启动docker 镜像
1111 是 fox-eureka-server 内的端口
说明:
此配置 主要是 执行
接着修改
执行命令
注意:
修改
例如:本地 仓库地址及端口为
原
修改为
执行命令
注意:
代码地址:https://github.com/foxiswho/example-java-spring-cloud/tree/master/fox-eureka-server
注意,以上修改完成后,要重新构建及推送到仓库
注意,这里只是一个 docker compose 案例,具体需要开启哪些端口需要 自己去配置
最后执行命令
打开浏览器 网址
fox.风
项目 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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中的
plugin的
com.spotify在
configuration元素内增加
<!--就是settings.xml 中 server.id --> <serverId>docker-hub</serverId>
执行命令
mvn clean package -DpushImage
注意:
pushImage标识,标识推送镜像标识,没有此标识,则不推送
推送到本地仓库
本地仓库很简单修改
pom.xml中的
plugin的
com.spotify的
configuration.imageName元素增加 本地地址和端口即可
例如:本地 仓库地址及端口为
http://localhsot:5000
原
imageName为
<imageName>fox/fox-eureka-server</imageName>
修改为
<imageName>localhost:5000/fox/fox-eureka-server</imageName>
执行命令
mvn clean package -DpushImage
注意:
pushImage标识,标识推送镜像标识,没有此标识,则不推送
代码地址:https://github.com/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.1 ports: - "1111:1111" environment: - spring.profiles.active=peer1 peer2: image:fox/fox-eureka-server:0.0.1 ports: - "1112:1112" environment: - spring.profiles.active=peer2 service-provider: image:fox/fox-eureka-service-provider:0.0.1 feign-service--consumer: image:fox/fox-eureka-feign-service-consumer:0.0.1 api-gateway: image:fox/api-gateway:0.0.1 config-eureka-server: image:fox/config-eureka-server:0.0.1 config-eureka-client: image:fox/config-eureka-client:0.0.1 fox-dashboard: image:fox/fox-dashboard:0.0.1
注意,这里只是一个 docker compose 案例,具体需要开启哪些端口需要 自己去配置
最后执行命令
docker-compose up
打开浏览器 网址
http://localhost:1111即可看到效果
相关文章推荐
- 使用docker-maven-plugin插件构建和推送Docker映像
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- 1.7 Docker与微服务-使用Maven插件构建Docker镜像
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- Docker使用 Maven 插件构建镜像的方法
- 浅谈使用Maven插件构建Docker镜像的方法
- Docker与微服务-使用Maven插件构建Docker镜像
- Docker系列教程12-使用Maven插件构建Docker镜像
- springboot 利用 docker-maven插件生成docker镜像并推送到镜像仓库
- 使用Maven插件构建Docker镜像
- Docker Maven插件本地构建镜像发布至远程服务器
- 使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器(非常有用)
- 使用Dockerfile构建镜像并push到私有仓库
- 第一个SpringBoot web 应用使用maven构建Docker镜像并容器化运行
- 使用阿里云Maven仓库镜像地址——加速你的maven构建
- 使用Dockerfile构建镜像并push到私有仓库
- 使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器
- 微服务部署之Maven插件构建Docker镜像