开启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. OBS录制全屏游戏的方法(超好录屏)

    新版Windows设置 详见 https://github.com/obsproject/obs-studio/wiki/Laptop-Troubleshooting 新版的Windows 10: l ...

  2. C++ 中文乱码的问题

    乱码的根本原因就是字符串编码的方式也字符串解码方式不一致导致的, 而在我们平常用的编码编码方式一般都是utf-8以gbk之间的相互转换, 下面给出编码方式的转换代码 string UtfToStrin ...

  3. 修改Launchpad的命令

    修改Launchpad命令 1.设置Launchpad 图标的列数 defaults write com.apple.dock springboard-columns -int 10 2.设置 Lau ...

  4. 苹果开发之App签名

    如果你的Apple ID账号(可使用邮箱来注册)为Apple developer类型的话,登录之后是看不到Certificates, Indentifiers & Profiles信息的 Ap ...

  5. 微信企业号SDK

    1. 微信企业号SDK class class_wxqiye { var $corpid = CorpID; var $corpsecret = CorpSecret; var $agentid = ...

  6. springboot+RabbitMQ 问题 RabbitListener 动态队列名称:Attribute value must be constant

    因为多机环境fanout广播模式,每台机器需要使用自己的队列接受消息 所以尝试使用以下的方案 private static final String QUEUE_NAME="foo.&quo ...

  7. BCryptPasswordEncoder 判断密码是否相同

    加密 BCryptPasswordEncoder encode = new BCryptPasswordEncoder(); encode.encode(password); 比较 matches(C ...

  8. Appium+python自动化(一)- 环境搭建—上(超详解)

    简介 今天是高考各地由于降水,特别糟糕,各位考生高考加油,全国人民端午节快乐.最近整理了一下自动化的东西,先前整理的python接口自动化已经接近尾声.即将要开启新的征程和篇章(Appium& ...

  9. 【Navicat】使用navicat执行sql 查询速度很慢解决方法

    ========================== Navicat 远程连接Mysql执行普通sql速度慢问题: 场景: navicat可以连接上 远程服务器的mysql.但是在navicat执行最 ...

  10. instr函数的用法

    1.定义 instr函数返回要截取的字符串在源字符串中的位置 语法如下:  instr( string1, string2 [, start_position [, nth_appearance ] ...