开启docker远程端口

我上一篇里面写了,这里暴露的路径:

18.16.202.95:2375

简单构建

配置pom.xml文件

在properties中增加一行指定远程主机的位置

 <properties>
<java.version>1.8</java.version>
<dockerHost>http://18.16.202.95:2375</dockerHost>
</properties>

增加一个plugin

   <plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<imageName>com.huishi.demo</imageName>
<!-- <imageName>${project.build.finalName}</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>

或者就用一个整个,dockerHost配置设置在插件里面:

  <plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<imageName>com.huishi.demo</imageName>
<!-- <imageName>${project.build.finalName}</imageName>-->
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<dockerHost>http://18.16.202.95:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

这种方式也是可以的。

configuration配置说明:

  • imageName:用于指定镜像的完整名称,其中{docker.registry}为注册中心地址,{project.groupId}为仓库名称,{project.artifactId}为镜像名称,${project.version}为镜像标签名.
  • dockerDirectory:用于指定Dockerfile文件所在的目录.
  • resources.resource.directory:用于指定需要复制的根目录,${project.build.directory}表示target目录.
  • resources.resource.include:用于指定需要复制的文件,${project.build.finalName}.jar表示生成的jar包.

configuration中也可以添加

 <forceTags>true</forceTags>

用于每次新的构建上覆盖镜像tags,如果如果已经存在该tag,那么旧的镜像将会设为none

构建镜像:

mvn -DskipTests clean package docker:build
mvn clean package docker:build -Dmaven.test.skip=true

查看:

[root@slaver2 /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
com.huishi.demo latest 860fe1ab3334 About a minute ago 662MB

启动镜像:

[root@slaver2 /]# docker run -p 18080:8080 com.huishi.demo

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.8.RELEASE) 2019-09-12 12:08:58.997 INFO 1 --- [ main] com.huishi.demo.DemoApplication : Starting DemoApplication v0.0.1-SNAPSHOT on 70b1ca956ab4 with PID 1 (/demo-0.0.1-SNAPSHOT.jar started by root in /)
2019-09-12 12:08:59.001 INFO 1 --- [ main] com.huishi.demo.DemoApplication : No active profile set, falling back to default profiles: default
2019-09-12 12:09:02.355 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2019-09-12 12:09:02.439 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-09-12 12:09:02.439 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.24]
2019-09-12 12:09:02.681 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-09-12 12:09:02.682 INFO 1 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3526 ms
2019-09-12 12:09:03.527 INFO 1 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-09-12 12:09:04.218 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2019-09-12 12:09:04.236 INFO 1 --- [ main] com.huishi.demo.DemoApplication : Started DemoApplication in 6.877 seconds (JVM running for 8.01)
2019-09-12 12:09:27.255 INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-09-12 12:09:27.256 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2019-09-12 12:09:27.292 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 36 ms

访问测试:

curl -XGET http://18.16.202.95:18080
Hello Docker World

使用Dockerfile进行构建

/src/main/docker目录下,建立文件Dockerfile

FROM java:8
VOLUME /tmp
ADD demo-0.0.1.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

使用-Djava.security.egd=file:/dev/./urandom加快随机数产生过程。

修改pom.xml配置:

  <plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<imageName>hongdada/${project.groupId}.${project.artifactId}</imageName>
<dockerHost>http://18.16.202.95:2375</dockerHost>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<forceTags>true</forceTags>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

其他步骤一样。这样即可使用Dockerfile进行构建Docker镜像啦。

异常

这里要注意的是,imageName必须符合正则[a-z0-9-_.],docker的imageName只能是小写字母,数字,点号,下划线

${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} 当前版本

如果要使用SpringBootimageName要设置为${project.build.finalName},注意修改version,一般默认为0.0.1-SNAPSHOT,注意大写字母

参考:

使用Maven插件构建Docker镜像

Docker系列教程12-使用Maven插件构建Docker镜像

使用Docker部署SpringBoot

maven docker 插件集成的几个小坑

docker与Spring boot的集成:docker-maven-plugin使用

SpringBoot中使用Maven插件,上传docker镜像的更多相关文章

  1. 使用jib上传docker镜像

    Jib 无需Docker守护程序即可为Java应用程序构建优化的Docker和OCI映像-无需深入了解Docker最佳实践.它可以作为Maven和Gradle的插件以及Java库使用. 我使用的是Ma ...

  2. 上传Docker镜像到阿里云

      1.配置阿里云的镜像加速器:https://cr.console.aliyun.com/#/accelerator 2.命令行登录到阿里云的doker仓库,--username为阿里云的用户名 d ...

  3. eclipse中maven插件上传项目jar包到私服

    我们知道,每一个公司都会有自己的工具包或公共包.这样的包就能够上传到公司的maven私服,就不用每一个人都去同步开发包了. 那么,怎么把本地项目打包并公布到私服呢?依照例如以下步骤就能够轻松完毕. 1 ...

  4. maven插件上传本地jar包到maven中央仓库

    settings配置(如果设置后有问题,可以重启idea,保证重新加载settings文件): <!-- 上传jar包到maven中央仓库配置start --> <server> ...

  5. 使用docker Maven插件本地构建docker镜像并发布到远程服务器

    1.登录网站https://start.spring.io/,生成一个基本的SpringBoot应用. 2.将应用导入Eclipse IDE并创建Application类.目录结构如下: Applic ...

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

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

  7. 上传docker镜像到阿里云镜像源

    阿里云docker镜像配置 阿里云用户名可以使用淘宝系的,或者新注册都行. a. 配置阿里云的镜像加速器:加速器 然后在线上创建`镜像仓库`,需要设置`命名空间`和`仓库名称`,然后接着操作下面的步骤 ...

  8. Aps.net中基于bootstrapt图片上传插件的应用

    Aps.net中基于bootstrapt图片上传插件的应用 在最近的项目中需要使用一个图片上传的功能,而且是多张图片同时上传到服务器的文件夹中,将图片路径存放在数据库中.为了外观好看使用了bootst ...

  9. 【Maven】2.使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库

    参考文章: http://www.cnblogs.com/luotaoyeah/p/3791966.html --------------------------------------------- ...

随机推荐

  1. idea找不到tomcat,找不到Tomcat server

    打开settings  添加即可 如果再没有,可能需要先安装timcat插件

  2. golang strings常用函数

    package main import ( "fmt" "strings" ) func main() { s1 := " aBc" s2 ...

  3. Loj #3124. 「CTS2019 | CTSC2019」氪金手游

    Loj #3124. 「CTS2019 | CTSC2019」氪金手游 题目描述 小刘同学是一个喜欢氪金手游的男孩子. 他最近迷上了一个新游戏,游戏的内容就是不断地抽卡.现在已知: - 卡池里总共有 ...

  4. C++:const

    const const是C++提供的一个强大的关键字,const的用法非常多,但总的来说,const的作用只有一个:保证被修饰的内容不会被程序所修改. const基本用法 对一个类型的对象使用cons ...

  5. Spring Boot入门及第一个案例

    一:SpringBoot是什么 springboot是对spring的缺点进行改善和优化,约定大于配置  开箱即用  没有代码生成 也无需xml 文件配置   可以修改属性值来满足需求 1) Spri ...

  6. [原创]Spring-Security-Oauth2.0浏览器端的登录项目分享

    1.简介 ​ CitySecurity项目为正式上线项目做得一个Demo,这里主要介绍浏览器端的登录.本项目使用了SpringSecurity实现表单安全登录.图形验证的校验.记住我时长控制机制.第三 ...

  7. ASP.NET Core 中的 Razor 文件编译

    asp .net core mvc 3.0 在编译的时候做了一些改变,有些view视图更改需要重新编译,你也可以配置运行时编译,不用每次更改都去重新生成,具体代码如下,从官方文档看到,做个记录. Ra ...

  8. WPF MainWindow的TopMost,Resizemode

    Topmost -[true,false] The default is false, but if set to true, your Window will stay on top of othe ...

  9. ASP.NET MVC中Log4Net记录错误日志的使用

    第一.在管理NuGet程序包 =>下载 Log4Net 第二.在web.config配置Log4Net 1:在<configuration>节点下 <configSection ...

  10. python 内建模块与第三方模块

    *)datetime模块 包括时间.时间对象.时间戳.时区.时区的转换 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/101764878 ...