开启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. 3.Python配套习题

    这里会持续更新Python每个部分知识点的配套练习题的目录...

  2. java web开发入门八(ssm整合)基于intellig idea

    ssm整合 一.导入相关包 二.开发流程 1.写entity package com.eggtwo.euq.entity; import java.io.Serializable; import ja ...

  3. redis对象存储(适用于订单系统自动更新)

    启动:redis-server.exe redis.windows.conf连接:redis-cli.exe -h 127.0.0.1 -p 6379 #插入取消的订单列表与时间: redis 127 ...

  4. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...

  5. linux vsftp查看ftp账号信息的方法

    linux vsftp查看ftp账号信息的方法 查看注册的FTP账号 在/etc/vsftpd/chroot_list 密码看不到 只能重置密码 passwd username

  6. 使用thanos管理Prometheus持久化数据

    关于thanos的介绍可以参考这篇官方博客的翻译文档,本文不作部署操作介绍.下图是thanos的官方架构图,主要有5个组件: Query:可以近似看作是Prometheus的实现,用于采集其他组件的数 ...

  7. 我的周记8——"因为相信,所以看见"

    我没想明白过哪一种生活对幸福的定义更恰当,只是回顾我们走过的路,都是好春光,都像梦一场 JAVA学习视频 https://edu.aliyun.com/promotion/26?utm_content ...

  8. C# 直接清空缓存方法

    注意要使用 HttpContext.Current.Cache.Remove(cacheKey); 不能使用 HttpRuntime.Cache[cacheKey]=null;

  9. 解决mac/win双系统,mac原生读写NTFS分区重启后失效的问题

    安装mac/win双系统,然后在mac下启用原生的NTFS分区读写功能,并将分区创建桌面快捷方式后,会发现有时候进入win后再进mac,原来创建的分区桌面快捷方式是白色的图标,并且分区也无法打开,这个 ...

  10. Flask基于websocket的简单聊天室

    1.安装gevent-websocket pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ gevent-websocket 2.cha ...