1.登录网站https://start.spring.io/,生成一个基本的SpringBoot应用。

2.将应用导入Eclipse IDE并创建Application类。目录结构如下:

Application代码如下:

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class Application {

@RequestMapping(value="/phone")
public String index(){
return "Hello World!";
}

}

" title="" data-original-title="复制">

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController; @RestController

public class Application {
@<span class="hljs-keyword">RequestMapping</span>(<span class="hljs-keyword">value</span>="/<span class="hljs-keyword">phone</span>")
public String index(){
<span class="hljs-selector-tag">return</span> "<span class="hljs-selector-tag">Hello</span> <span class="hljs-selector-tag">World</span>!";
}

}

3.在pom.xml文件中增加插件配置:

com.spotify
docker-maven-plugin
0.4.12



microservice-eureka-demo
java
["java", "-jar", "/${project.build.finalName}.jar"]

/
${project.build.directory}
${project.build.finalName}.jar

" title="" data-original-title="复制">

<!-- 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-eureka-demo</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>

4.pom.xml文件中增加依赖:

org.springframework.boot
spring-boot-starter-web

" title="" data-original-title="复制">

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

5.配置本地环境变量,设置docker文件构建主机(主机192.168.244.130已经安装完docker环境)

root@ubuntu-02:~# docker -v
Docker version 17.05.0-ce, build 89658be

本地环境变量配置如下:

6.进入代码目录,执行命令“mvn clean package docker:build”项目编译成功。

C:\Users\Sean\Downloads\demo\demo\target\docker\dockerdemo-0.0.1-SNAPSHOT.jar
[INFO] Building image microservice-eureka-demo
Step 1/3 : FROM java
---> d23bdf5b1b1b
Step 2/3 : ADD /dockerdemo-0.0.1-SNAPSHOT.jar //
---> e1b3c3de711c
Removing intermediate container a9e57b1d9883
Step 3/3 : ENTRYPOINT java -jar /dockerdemo-0.0.1-SNAPSHOT.jar
---> Running in 7a3cdc1d112b
---> 1f800bf8cb24
Removing intermediate container 7a3cdc1d112b
Successfully built 1f800bf8cb24
Successfully tagged microservice-eureka-demo:latest
[INFO] Built microservice-eureka-demo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 39.982 s
[INFO] Finished at: 2017-07-23T21:51:21+08:00
[INFO] Final Memory: 42M/393M
[INFO] ------------------------------------------------------------------------
" title="" data-original-title="复制">

[INFO]
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ dockerdemo ---
[INFO] Building jar: C:\Users\Sean\Downloads\demo\demo\target\dockerdemo-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default) @ dockerdemo ---
[INFO]
[INFO] --- docker-maven-plugin:0.4.12:build (default-cli) @ dockerdemo ---
[INFO] Copying C:\Users\Sean\Downloads\demo\demo\target\dockerdemo-0.0.1-SNAPSHOT.jar -> C:\Users\Sean\Downloads\demo\demo\target\docker\dockerdemo-0.0.1-SNAPSHOT.jar
[INFO] Building image microservice-eureka-demo
Step 1/3 : FROM java
---> d23bdf5b1b1b
Step 2/3 : ADD /dockerdemo-0.0.1-SNAPSHOT.jar //
---> e1b3c3de711c
Removing intermediate container a9e57b1d9883
Step 3/3 : ENTRYPOINT java -jar /dockerdemo-0.0.1-SNAPSHOT.jar
---> Running in 7a3cdc1d112b
---> 1f800bf8cb24
Removing intermediate container 7a3cdc1d112b
Successfully built 1f800bf8cb24
Successfully tagged microservice-eureka-demo:latest
[INFO] Built microservice-eureka-demo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 39.982 s
[INFO] Finished at: 2017-07-23T21:51:21+08:00
[INFO] Final Memory: 42M/393M
[INFO] ------------------------------------------------------------------------

7.ssh连接192.168.244.130,执行命令“docker images”,查看可用的镜像:

root@ubuntu-02:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
microservice-eureka-demo latest 1f800bf8cb24 23 minutes ago 658MB

8.执行命令“docker run -p 8080:8080 microservice-eureka-demo:latest”,使用镜像microservice-eureka-demo:latest启动docker容器。

. ____ _ __ _ _

/\ / ' __ _ () __ __ _ \ \ \

( ( )_
_ | '_ | '| | ' / ` | \ \ \

\/ )| |)| | | | | || (| | ) ) ) )

' |
| .__|| ||| |__, | / / / /

=|_|======|/=////

:: Spring Boot :: (v1.5.4.RELEASE)

2017-07-23 14:19:21.766 INFO 1 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication v0.0.1-SNAPSHOT on 656842f890d3 with PID 1 (/dockerdemo-0.0.1-SNAPSHOT.jar started by root in /)

2017-07-23 14:19:21.792 INFO 1 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default

2017-07-23 14:19:22.402 INFO 1 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5a2e4553: startup date [Sun Jul 23 14:19:22 UTC 2017]; root of context hierarchy

2017-07-23 14:19:31.950 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)

2017-07-23 14:19:32.015 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]

2017-07-23 14:19:32.032 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.15

2017-07-23 14:19:32.467 INFO 1 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2017-07-23 14:19:32.467 INFO 1 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 10082 ms

2017-07-23 14:19:33.101 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]

2017-07-23 14:19:33.141 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/]

2017-07-23 14:19:33.148 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/
]

2017-07-23 14:19:33.161 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/]

2017-07-23 14:19:33.161 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/
]

2017-07-23 14:19:34.708 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5a2e4553: startup date [Sun Jul 23 14:19:22 UTC 2017]; root of context hierarchy

2017-07-23 14:19:35.105 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/phone]}" onto public java.lang.String com.example.demo.controller.Application.index()

2017-07-23 14:19:35.127 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)

2017-07-23 14:19:35.138 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)

2017-07-23 14:19:35.277 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-07-23 14:19:35.285 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/
] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-07-23 14:19:35.466 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-07-23 14:19:36.180 INFO 1 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup

2017-07-23 14:19:36.449 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)

2017-07-23 14:19:36.477 INFO 1 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 17.363 seconds (JVM running for 19.474)

" title="" data-original-title="复制">

root@ubuntu-02:~# docker run -p 8080:8080 microservice-eureka-demo:latest

.   ____          _            __ _ _

/\ / ' __ _ () __ __ _ \ \ \

( ( )_
_ | '_ | '| | ' / ` | \ \ \

\/ )| |)| | | | | || (| | ) ) ) )

' |
| .__|| ||| |__, | / / / /

=|_|======|/=////

:: Spring Boot :: (v1.5.4.RELEASE) 2017-07-23 14:19:21.766 INFO 1 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication v0.0.1-SNAPSHOT on 656842f890d3 with PID 1 (/dockerdemo-0.0.1-SNAPSHOT.jar started by root in /)

2017-07-23 14:19:21.792 INFO 1 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default

2017-07-23 14:19:22.402 INFO 1 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5a2e4553: startup date [Sun Jul 23 14:19:22 UTC 2017]; root of context hierarchy

2017-07-23 14:19:31.950 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)

2017-07-23 14:19:32.015 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]

2017-07-23 14:19:32.032 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.15

2017-07-23 14:19:32.467 INFO 1 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2017-07-23 14:19:32.467 INFO 1 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 10082 ms

2017-07-23 14:19:33.101 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]

2017-07-23 14:19:33.141 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/]

2017-07-23 14:19:33.148 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/
]

2017-07-23 14:19:33.161 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/]

2017-07-23 14:19:33.161 INFO 1 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/
]

2017-07-23 14:19:34.708 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5a2e4553: startup date [Sun Jul 23 14:19:22 UTC 2017]; root of context hierarchy

2017-07-23 14:19:35.105 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/phone]}" onto public java.lang.String com.example.demo.controller.Application.index()

2017-07-23 14:19:35.127 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)

2017-07-23 14:19:35.138 INFO 1 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)

2017-07-23 14:19:35.277 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-07-23 14:19:35.285 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/
] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-07-23 14:19:35.466 INFO 1 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-07-23 14:19:36.180 INFO 1 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup

2017-07-23 14:19:36.449 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)

2017-07-23 14:19:36.477 INFO 1 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 17.363 seconds (JVM running for 19.474)

9.执行命令“docker ps”,查看启动的docker容器。

8080/tcp upbeat_borg

" title="" data-original-title="复制">

root@ubuntu-02:~# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

08099bd4b8e1 microservice-eureka-demo:latest "java -jar /docker..." 27 seconds ago Up 26 seconds 0.0.0.0:8080->8080/tcp upbeat_borg

10.执行命令“docker exec -it 08099bd4b8e1 bin/bash”,进入docker容器。

root@ubuntu-02:~# docker exec -it 08099bd4b8e1 bin/bash
root@08099bd4b8e1:/#

11.执行命令“ps -ef”,可用查看到docker容器里面启动的进程,即是pom.xml配置文件中配置的插件docker-maven-plugin的entryPoint,java -jar /dockerdemo-0.0.1-SNAPSHOT.jar。

["java", "-jar", "/${project.build.finalName}.jar"]

root@08099bd4b8e1:/# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 4 14:20 ? 00:00:17 java -jar /dockerdemo-0.0.1-SNAPSHOT.jar

root 34 0 0 14:24 ? 00:00:00 bin/bash

root 41 34 0 14:26 ? 00:00:00 ps -ef

root@08099bd4b8e1:/#

" title="" data-original-title="复制">

<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>

root@08099bd4b8e1:/# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 4 14:20 ? 00:00:17 java -jar /dockerdemo-0.0.1-SNAPSHOT.jar

root 34 0 0 14:24 ? 00:00:00 bin/bash

root 41 34 0 14:26 ? 00:00:00 ps -ef

root@08099bd4b8e1:/#

12.至此,使用docker插件构建docker镜像并运行docker容器完成,访问路径“http://192.168.244.130:8080/p...”,获得controller结果:

原文地址:https://segmentfault.com/a/1190000010313412

使用docker Maven插件本地构建docker镜像并发布到远程服务器的更多相关文章

  1. 【Spring Boot】Spring Boot之使用Alibaba Cloud Toolkit(Idea插件)本地一键部署Spring Boot项目到远程服务器

    一.Alibaba Cloud Toolkit(Idea插件)的安装 1)Alibaba Cloud Toolkit 介绍 Cloud Toolkit 是本地 IDE 插件,帮助开发者更高效地开发.测 ...

  2. 使用Docker Maven 插件进行镜像的创建以及上传至私服

    1.在进行服务容器化部署的时候,需要将服务以及其运行的环境整个打包做成一个镜像,打包的过程有两种办法,第一种是首选通过maven打成jar包,然后再编写dockerfile,执行docker buil ...

  3. Docker:使用Jenkins构建Docker镜像

    Docker  彭东稳  1年前 (2016-12-27)  10709次浏览  已收录  0个评论 一.介绍Jenkins Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从 ...

  4. eclipse 如何修改maven插件本地仓库jar包默认存储位置

      eclipse 如何修改maven插件本地仓库jar包默认存储位置 CreateTime--2018年4月18日11:04:47 Author:Marydon 1.更改eclipse的maven本 ...

  5. Jenkins自动化构建vue项目然后发布到远程Linux服务器

    部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...

  6. 使用maven插件dockerfile-maven-plugin生成Docker镜像并推送到镜像仓库

    1.引入maven插件 <build> <plugins> <plugin> <groupId>com.spotify</groupId> ...

  7. Docker学习之4——构建NGINX镜像

    Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性:1.作为Web服务器.2.作为负载均衡服务器.3.作为邮件代理服务器.4.安装及配置简单.接下来我们介绍在docker构建ng ...

  8. docker使用centos7系统构建tomcat镜像

    FROM shansongxian/centos-oraclejdk8:latest #此镜像使用centos7系统,精简jdk,只运行java程序,无法编译/构建 MAINTAINER huqian ...

  9. docker使用alpine系统构建tomcat镜像

    FROM frolvlad/alpine-oraclejdk8 #此镜像使用alpine-glibc系统,精简jdk,只运行java程序,无法编译/构建 MAINTAINER huqiang:2018 ...

随机推荐

  1. Mysql command line

    show databasename; use databasename; show tables; desc tablename;

  2. 使用notepad++远程编辑Linux文档

    上一篇中,我写了如何使用使用ftp服务器实现很方便的通信,这一篇我分享一个使用notepad++的一个NPPFTP插件远程编辑Linux中的文档的小技巧. 首先要确保你的Linux的ftp服务已经打开 ...

  3. cocostudio的bug(1)

    今天有个女同事问我一个问题,两个cocostudio的ui同时addChild到一个layer上面,高层级的ui设置visible为false,低层级的ui设置的visible设置为true,然后低层 ...

  4. 20181111 计时器影响DOM点击事件的逻辑

    今天在群里看见一个人在问"点击按钮使图片产生旋转为什么要使用计时器来实现",我自己操作了一遍她的代码才发现里面的逻辑实现很有意思,所以写出来分享一下. 她的代码是这样写的: < ...

  5. 前端开发面试题之JavaScript(转自公众号)(1)

    js基本数据类型:Undefine Number Null Boolean String; js内置对象:数据封装类对象:object.Array.Boolean.String: 其他:Functio ...

  6. git使用stash存储相关操作

    git stash  将当前修改存储起来 git stash apply 恢复最近一次存储 git stash apply stash@{2} 恢复某一次存储 git stash list 查看存储列 ...

  7. MFC里 显示设备上下文CClient dc(this) 和 CPaintDC dc(this)

    1 CPaintDC类(1)CPaintDC类是CDC类的一个派生类,该类一般用在响应WM_PAINT消息的函数OnPaint()中.(2)WM_PAINT消息是当窗口的某个区域需要重画时激发的窗口消 ...

  8. 变量赋值理解--Pyton中让两个值互换的方法

    #Pyton中让两个值互换的方法 #方法一:可以理解为相当于是同时赋值 a = 5 b = 4 a,b = b,a print(a,b) #方法二:可以理解为拿箱子过程 c = 10 d = 20 e ...

  9. charles 模拟手机弱网、修改请求参数、修改返回值

    1.charles模拟弱网(断网) 2.charles修改请求参数 (1)先访问一次需要改的请求,在charles上找到相应的请求地址 (2)然后在需要打断点的请求上右键,勾选[Breakpoints ...

  10. 优酷项目之 ORM(数据库对象关系映射)代码重写

    前言: 我们在操作数据库时候一般都是通过sql代码来操作mysql数据库中相关数据,这就需要懂得sql语句,那么怎么样才能在不懂sql语句的情况下通过我们所学的python代码来实现对mysql数据库 ...