Springboot工程制作镜像并推送到云镜像

springboot工程

我们在这里找了一个原来的项目工程,项目结构如下:

Springboot工程制作镜像并推送到云镜像

Dockerfile文件编写

FROMjava:8VOLUME/tmpADDjwordpress-web.jarweb.jarENTRYPOINT["java","-Djava.security.egd=file:/dev/./urandom","-jar","/web.jar"]复制代码

VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录 项目的 jar 文件作为 “app.jar” 添加到容器的 ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source

制作镜像并发布到私有仓库

方法一:本地利用docker命令

Maven install INFO] ------------------------------------------------------------------------[INFO] Reactor Summary:[INFO] [INFO] jwordpress-parent .................................. SUCCESS [  0.215 s][INFO] jworpdress-web ..................................... SUCCESS [  2.308 s][INFO] jwordpress-admin ................................... SUCCESS [  0.035 s][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 2.852 s复制代码

然后到target 目录下看是否生成了jar文件

Springboot工程制作镜像并推送到云镜像

然后将jwordpress-web.jar和Dockerfile 放在同一个文件下。执行下面命令 “ docker build -t jwordpress:web-1.0.3.RELEASE .

liuhaihua@liuhaihuadeMacBook-Pro target % docker build -t jwordpress:web-1.0.3.RELEASE .Sending build context to Docker daemon  51.81MBStep 1/4 : FROM java:8 ---> d23bdf5b1b1bStep 2/4 : VOLUME /tmp ---> Using cache ---> d27a75b4151cStep 3/4 : ADD jwordpress-web.jar web.jar ---> 90b04ec165ccStep 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/web.jar"] ---> Running in 4663a51a704eRemoving intermediate container 4663a51a704e ---> 312c514e7ecdSuccessfully built 312c514e7ecdSuccessfully tagged jwordpress:web-1.0.3.RELEASE复制代码

查看镜像

Springboot工程制作镜像并推送到云镜像

推送到云镜像仓库

$ sudo docker login --username=hi35928472@aliyun.com registry.cn-hangzhou.aliyuncs.com$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/shanbei/web:[镜像版本号]$ sudo docker push registry.cn-hangzhou.aliyuncs.com/shanbei/web:[镜像版本号]复制代码

例子如下图:

Springboot工程制作镜像并推送到云镜像

登陆云仓库看是否上传成功

Springboot工程制作镜像并推送到云镜像

方法二:利用maven插件

<plugins><!--docker支持插件--><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>0.4.13</version><configuration><imageName>${docker.repository.url}/${docker.repository.namespace}/${project.artifactId}:${project.version}</imageName><serverId>${docker.repository.serverId}</serverId><registryUrl>${docker.repository.url}</registryUrl><dockerDirectory>src/main/docker</dockerDirectory><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin>复制代码

Setting.xml增加仓库用户名和密码

<servers>    <server>        <id>docker-aliyun-my</id>        <username>xxxx@xxx.com</username>        <password>xxxx</password>        <configuration>            <email>xxx@xxxx.com</email>        </configuration>    </server></servers>复制代码

常量

<docker.repository.url>registry.cn-qingdao.aliyuncs.com</docker.repository.url><docker.repository.namespace>shanbei</docker.repository.namespace><docker.repository.serverId>aliyun-docker-hub</docker.repository.serverId>复制代码

运行docker build

Springboot工程制作镜像并推送到云镜像

然后在运行docker push

Springboot工程制作镜像并推送到云镜像

2种方式都可以,现实中,我们可能需要jenkins来打包部署,所以最好采用第二种方式比较靠谱。

原文 

https://juejin.im/post/5e7d5d58f265da79516642f6

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Springboot工程制作镜像并推送到云镜像

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址