使用DockerMaven插件与Docker私有仓库来快速部署项目
微服务部署有两种方法:
(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚
拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署。
对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这
里学习如何自动部署,这也是企业实际开发中经常使用的方法。
1.安装docker私有仓库
1)拉取私有仓库 镜像
1 | docker pull registry |
2)启动私有仓库容器
1 | docker run -di --name=registry -p 5000:5000 registry |
3) 打开浏览器查看是否搭建成功
1 | (换成自己ip)192.168.40.128:5000/v2/_catalog |
4) 让docker信任私有仓库地址,修改daemon.json
1 2 3 4 5 | vim /etc/docker/daemon.json 添加 "insecure-registries" :[ "192.168.40.128(换成你自己IP):5000" ] |
5)重启Docker且启动仓库registry
1 2 3 | systemctl restart docker docker start registry |
2.安装基础镜像JDK.1.8
1) 上传 linux的jdk1.8安装包
2)创建目录并把jdk包移动到目录
1 2 3 4 5 | mkdir -p /usr/local/dockerjdk8 mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8 cd /usr/local/dockerjdk8 |
3)创建Dockerfile文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | vi Dockerfile 输入 FROM centos:7 MAINTAINER itcast WORKDIR /usr RUN mkdir /usr/local/java ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH $JAVA_HOME/bin:$PATH |
4)构建镜像
1 | docker build -t= 'jdk1.8' . |
3.配置docker可以被远程访问
1)备份一下docker.service文件
1 | cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak |
2)在docker.service文件中ExecStart=后添加配置
1 2 3 4 5 | vim /lib/systemd/system/docker.service ExecStart=后添加配置 -H tcp: //0.0.0.0:2375 -H unix:///var/run/docker.sock |
3)刷新配置,重启服务
1 2 3 4 5 | systemctl daemon-reload systemctl restart docker docker start registry |
4)在需要部署的项目的pom文件上面添加插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <build> <finalName>luojiang-demo</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--这里写上main方法所在类的路径--> <configuration> <mainClass>com.example.demo.LuojiangDemoApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </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>服务器的ip:5000/${project.artifactId}:${project.version}</imageName> <!-- 基于**镜像 --> <baseImage>jdk1.8</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> <dockerHost>http: //私服所在服务器ip:2375</dockerHost> </configuration> </plugin> </plugins> </build> |
5)本地打包或执行构建推送命令
1 2 3 | mvn install mvn package docker:build -DpushImage |
6)查看上传的docker镜像, 查看私有仓库镜像
1 | docker images |
浏览器中访问
1 | (你自己的IP)192.168.40.128:5000/v2/_catalog |
7) 启动并测试上传的系统
1 | docker run -di --name= base -p 8080:8080 192.168.40.128:5000/springboot_v2:2.0.0.RELEASE(宿主机端口:容器端口 镜像名称:版本号) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 终于决定:把自己家的能源管理系统开源了!
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· ASP.NET Core - 日志记录系统(二)
· 实现windows下简单的自动化窗口管理