前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DockerMaven插件(将Dockerfile的两步操作整合成一步)

DockerMaven插件(将Dockerfile的两步操作整合成一步)

作者头像
名字是乱打的
发布2022-05-13 10:22:35
4690
发布2022-05-13 10:22:35
举报
文章被收录于专栏:软件工程

微服务部署有两种方法:

  • (1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚 拟机并拷贝至JDK容器。
  • (2)通过Maven插件自动部署。 (推荐)

选型 对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这里学习如何自动部署,这也是企业实际开发中经常使用的方法。

Maven插件自动部署步骤: (1)修改宿主机的docker配置,让其可以被maven插件远程访问 vi /lib/systemd/system/docker.service 其中ExecStart=后添加配置‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock 0.0.0.0.表示任何ip地址都可以访问 修改后如下:

(2)刷新配置,重启服务

systemctl daemon-reload

systemctl restart docker

docker start registry

(3)在zyh-eureka工程pom.xml增加配置

代码语言:javascript
复制
<build><!--这个build使得项目可以打包到linux的docker里-->
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--‐ docker的maven插件,官网:https://github.com/spotify/docker‐maven‐plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>192.168.1xx.1xx:5000/${project.artifactId}:${project.version}</imageName>
                    <!--<groupId>com.tensquare</groupId> version>1.0-SNAPSHOT</version>-->
                    <baseImage>jdk1.8</baseImage>
                    <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint><!--以我们起的finalName打个jar包-->
                    <resources><!--指定打好的jar包去哪里,最终变成app.jar-->
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <dockerHost>http://192.168.1xx.1xx:2375</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>

以上配置会自动生成Dockerfile 方便下一步执行命令进行传输

代码语言:javascript
复制
FROM jdk1.8
ADD app. jar /
ENTRYPOINT ["java","-jar","/app. jar"]

(5)在windows的命令提示符下,进入zyh_eureka工程所在的目录,输入以下命令,进行打包和上传镜像

代码语言:javascript
复制
mvn clean package docker:build ‐DpushImage
//clean 清理
//package 打包
//docker:build代表生成镜像
//‐DpushImage 传到docker

执行后,会有如下输出,代码正在上传

浏览器访问 http://192.168.184.135:5000/v2/_catalog ,输出

代码语言:javascript
复制
{"repositories":["zyh_eureka"]}

(6)进入宿主机 , 查看镜像

docker images

输出如上内容,表示tensquare_eureka微服务已经做成镜像

(7) 启动容器:

代码语言:javascript
复制
docker run -d --name=eureka -p 6868:6868
192.168.184.135: 5000/tensquare eureka:1.0-SNAPSHOT
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档