E-MapReduce大数据平台
1. 产品介绍 E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、Kafka、Storm,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 2. 产品优势 3. 产品功能 4. 应用场景 4.1 离线数据处理 4.2 Ad hoc数据分析 4.3 海量数据在线服务 4.4 流式数据处理
一个用于构建和推送Docker镜像的Maven插件。
使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇文章借助开源插件docker-maven-plugin 进行操作
以下操作。默认你已经阅读过我上一篇文章:
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
http://www.ymq.io/2018/01/11/Docker-deploy-spring-boot-Integrate-redis
Ubuntu 17.04 x64 安装 Docker CE
http://www.ymq.io/2018/01/11/Docker-Install-docker-ce/
docker-maven-plugin
GitHub 地址:https://github.com/spotify/docker-maven-plugin
在pom.xml中添加下面这段,
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed-->
<imageName>microservice-discovery-eureka</imageName>
<baseImage>java</baseImage>
<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>
</plugins>
</build>
使用 maven 命令: mvn clean package docker:build
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin
& mvn clean package docker:build
我们会发现控制台有类似如下内容:
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ docker-spring-boot-demo-maven-plugin ---
[INFO] Building jar: /opt/other-projects/docker-spring-boot-demo-maven-plugin/target/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.9.RELEASE:repackage (default) @ docker-spring-boot-demo-maven-plugin ---
[INFO]
[INFO] --- docker-maven-plugin:0.4.12:build (default-cli) @ docker-spring-boot-demo-maven-plugin ---
[INFO] Copying /opt/other-projects/docker-spring-boot-demo-maven-plugin/target/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar -> /opt/other-projects/docker-spring-boot-demo-maven-plugin/target/docker/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar
[INFO] Building image docker-spring-boot-demo-maven-plugin
Step 1/3 : FROM java
---> d23bdf5b1b1b
Step 2/3 : ADD /docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar //
---> b5d8f92756f2
Step 3/3 : ENTRYPOINT ["java", "-jar", "/docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar"]
---> Running in 6867f460b40c
Removing intermediate container 6867f460b40c
---> 378fd82432e0
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 378fd82432e0
Successfully tagged docker-spring-boot-demo-maven-plugin:latest
[INFO] Built docker-spring-boot-demo-maven-plugin
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.568 s
[INFO] Finished at: 2018-01-15T09:21:39+00:00
[INFO] Final Memory: 37M/89M
[INFO] ------------------------------------------------------------------------
root@souyunku:/opt/other-projects/docker-spring-boot-demo-maven-plugin#
恭喜,构建成功了。
-我们执行docker images 会发现该镜像已经被构建成功:
& root@souyunku:# docker images docker-spring-boot-demo-maven-plugin
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-spring-boot-demo-maven-plugin latest 378fd82432e0 3 minutes ago 659MB
root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin
84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
& root@souyunku:# docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
84ebb2ebb8c0 docker-spring-boot-demo-maven-plugin "java -jar /docker-s…" About an hour ago Up About an hour 0.0.0.0:8080->80/tcp MySpringBootMavenPlugin
浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
使用Dockerfile进行构建Docker镜像
上文讲述的方式是最简单的方式,很多时候,我们还是要借助Dockerfile进行构建的,
首先我们在/docker-spring-boot-demo-maven-plugin/src/main/resources目录下,建立文件Dockerfile
FROM java:8
VOLUME /tmp
ADD docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 9000
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
项目pom.xml修改为如下: 指定Dockerfile所在的路径
<build>
<plugins>
<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed-->
<imageName>docker-spring-boot-demo-maven-plugin</imageName>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>${basedir}/src/main/resources</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
使用 maven 命令: mvn clean package docker:build
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin
& mvn clean package docker:build
root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin
84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
其他步骤和上面一样。这样即可使用Dockerfile进行构建Docker镜像啦。
浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
将Docker镜像push到DockerHub上
首先修改Maven的全局配置文件settings.xml,
查看settings.xml 所在位置
root@souyunku:# find / -name settings.xml
/etc/maven/settings.xml
添加以下段落
vi /etc/maven/settings.xml
<servers>
<server>
<id>docker-hub</id>
<username>DockerHub 的账号</username>
<password>DockerHub 的密码</password>
<configuration>
<email>admin@souyunku.com</email>
</configuration>
</server>
</servers>
注册个账号:https://hub.docker.com/
在DockerHub上创建Create Repository ,例如:docker-spring-boot-demo-maven-plugin,如下图
项目pom.xml修改为如下:注意imageName的路径要和repo的路径一致
镜像名称
<properties>
<docker.image.prefix>souyunku</docker.image.prefix>
</properties>
将Docker镜像push到DockerHub上
<!--3:将Docker镜像push到DockerHub上-->
<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository
name ... only [a-z0-9-_.] are allowed -->
<!-- 如果要将docker镜像push到DockerHub上去的话,这边的路径要和repo路径一致 -->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>${basedir}/src/main/resources</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- 以下两行是为了docker push到DockerHub使用的。 -->
<serverId>docker-hub</serverId>
<registryUrl>https://index.docker.io/v1/</registryUrl>
</configuration>
</plugin>
使用 maven 命令: mvn clean package docker:build -DpushImage
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin
& mvn clean package docker:build -DpushImage
看到类似这样的数据,就证明构建镜像没毛病
[INFO] Building image souyunku/docker-spring-boot-demo-maven-plugin
Step 1/6 : FROM java:8
---> d23bdf5b1b1b
Step 2/6 : VOLUME /tmp
---> Using cache
---> cb237cc84527
Step 3/6 : ADD docker-spring-boot-demo-maven-plugin-0.0.1-SNAPSHOT.jar app.jar
---> 7fb5e3363ed5
Step 4/6 : RUN bash -c 'touch /app.jar'
---> Running in ab5d10dd64ad
Removing intermediate container ab5d10dd64ad
---> 05d96fe59da4
Step 5/6 : EXPOSE 9000
---> Running in d63e20122d8e
Removing intermediate container d63e20122d8e
---> 55ba378141fd
Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
---> Running in 962d476363a3
Removing intermediate container 962d476363a3
---> 654b596fe91f
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 654b596fe91f
Successfully tagged souyunku/docker-spring-boot-demo-maven-plugin:latest
[INFO] Built souyunku/docker-spring-boot-demo-maven-plugin
[INFO] Pushing souyunku/docker-spring-boot-demo-maven-plugin
The push refers to repository [docker.io/souyunku/docker-spring-boot-demo-maven-plugin]
464800d90790: Pushed
d52b146f9147: Pushed
35c20f26d188: Mounted from souyunku/docker-spring-boot-demo
c3fe59dd9556: Mounted from souyunku/docker-spring-boot-demo
6ed1a81ba5b6: Mounted from souyunku/docker-spring-boot-demo
a3483ce177ce: Mounted from souyunku/docker-spring-boot-demo
ce6c8756685b: Mounted from souyunku/docker-spring-boot-demo
30339f20ced0: Mounted from souyunku/docker-spring-boot-demo
0eb22bfb707d: Mounted from souyunku/docker-spring-boot-demo
a2ae92ffcd29: Mounted from souyunku/docker-spring-boot-demo
latest: digest: sha256:8d78ced0034f38be8086c8f812817ec4c12b178470b4cea668046906c825c9ee size: 2424
null: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41.764 s
[INFO] Finished at: 2018-01-16T09:56:23+00:00
[INFO] Final Memory: 36M/88M
[INFO] ------------------------------------------------------------------------
root@souyunku:/opt/other-projects/docker-spring-boot-demo-maven-plugin#
root@souyunku:# docker images souyunku/docker-spring-boot-demo-maven-plugin
REPOSITORY TAG IMAGE ID CREATED SIZE
souyunku/docker-spring-boot-demo-maven-plugin latest 654b596fe91f 27 minutes ago 674MB
root@souyunku:# docker images souyunku/docker-spring-boot-demo-maven-plugin
REPOSITORY TAG IMAGE ID CREATED SIZE
souyunku/docker-spring-boot-demo-maven-plugin latest 654b596fe91f 27 minutes ago 674MB
Docker Hub 查看镜像,看到已经上传成功
root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin
84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
其他步骤和上面一样。这样即可使用Dockerfile进行构建Docker镜像啦。
浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
将插件绑定在某个phase执行
在很多场景下,我们有这样的需求,例如执行mvn clean package 时,自动地为我们构建docker镜像,可以吗?答案是肯定的。我们只需要将插件的goal 绑定在某个phase即可。
所谓的phase和goal,可以这样理解:maven命令格式是:mvn phase:goal ,例如mvn package docker:build 那么,package 和 docker 都是phase,build 则是goal 。
下面是示例:
首先配置属性:
<properties>
<docker.image.prefix>souyunku</docker.image.prefix>
</properties>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository
name ... only [a-z0-9-_.] are allowed -->
<!-- 如果要将docker镜像push到DockerHub上去的话,这边的路径要和repo路径一致 -->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>${basedir}/src/main/resources</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- 以下两行是为了docker push到DockerHub使用的。 -->
<serverId>docker-hub</serverId>
<registryUrl>https://index.docker.io/v1/</registryUrl>
</configuration>
</plugin>
新加内容
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
本例指的是讲docker的build目标,绑定在package这个phase上。
也就是说,用户只需要执行mvn package ,就自动执行了mvn docker:build 。
使用 maven 命令: mvn package
& cd /opt/other-projects/docker-spring-boot-demo-maven-plugin
& mvn package
root@souyunku:# docker run --name MySpringBootMavenPlugin -d -p 8080:80 docker-spring-boot-demo-maven-plugin
84ebb2ebb8c002d3935e6e31c6d2aab05c32c075036368228e84f818d20ded4a
浏览器输入:http://Docker宿主机IP:8080能够正常看到界面,文章开头的最终效果页面。
推荐阅读:Docker Hub 仓库使用,及搭建 Docker Registry
http://www.ymq.io/2017/12/31/Docker-dockerHub/
GitHub :docker-spring-boot-demo-maven-plugin
https://github.com/souyunku/other-projects/tree/master/docker-spring-boot-demo-maven-plugin
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。