徐州做网站的设计师,应用市场免费下载安装,查建设工程规划许可证在哪个网站,优衣库的网络营销方式在生产环境都是怎么部署 Spring Boot?
打成 jar 直接一键运行打成 war 扔到 Tomcat 容器中运行容器化部署
一、准备Docker
在 CentOS7 上安装好 Docker 修改 Docker 配置#xff0c;开启允许远程访问 Docker 的功能#xff0c;开启方式很简单#xff0c;修改 /usr/lib/s…在生产环境都是怎么部署 Spring Boot?
打成 jar 直接一键运行打成 war 扔到 Tomcat 容器中运行容器化部署
一、准备Docker
在 CentOS7 上安装好 Docker 修改 Docker 配置开启允许远程访问 Docker 的功能开启方式很简单修改 /usr/lib/systemd/system/docker.service 文件加入如下内容
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock配置完成后保存退出然后重启 Docker
systemctl daemon-reload
service docker restart二、IDEA中安装Docker插件
点击 File-Settings-Plugins-Browse Repositories 如下 点击右边绿色的 Install 按钮完成安装安装完成之后需要重启一下 IDEA。
IDEA 重启成功之后我们依次打开 File-Settings-Build,Execution,Deployment-Docker 然后配置一下 Docker 的远程连接地址 配置一下 Docker 的地址配置完成后可以看到下面有一个 Connection successful 提示这个表示 Docker 已经连接上了。
三、创建项目
Spring Boot 项目只需要引入 spring-boot-starter-web 依赖即可
RestController
public class HelloDockerController {GetMapping(/hello)public String hello() {return hello docker!;}
}四、配置Dockerfile
在项目的根目录下我创建一个 Dockerfile 作为我镜像的构建文件具体位置如下图 文件内容如下
FROM hub.c.163.com/library/java:latest
VOLUME /tmp
ADD target/docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT [java,-jar,/app.jar]Spring Boot 项目的运行依赖 Java 环境所以自己的镜像基于 Java 镜像来构建考虑到 Docker 官方镜像下载较慢我这里使用了网易提供的 Docker 镜像。由于 Spring Boot 运行时需要 tmp 目录这里数据卷配置一个 /tmp 目录出来将本地 target 目录中打包好的 .jar 文件复制一份新的 到 /app.jar。最后就是配置一下启动命令由于我打包的 jar 已经成为 app.jar 了所以启动命令也是启动 app.jar
五、配置Maven插件
plugingroupIdcom.spotify/groupIdartifactIddocker-maven-plugin/artifactIdversion1.2.0/versionexecutionsexecutionidbuild-image/idphasepackage/phasegoalsgoalbuild/goal/goals/execution/executions!--configuration 中分别配置 Docker 的主机地址镜像的名称镜像的 tags其中 dockerDirectory 表示指定 Dockerfile 的位置--configurationdockerHosthttp://192.168.66.131:2375/dockerHostimageNamejavaboy/${project.artifactId}/imageNameimageTagsimageTag${project.version}/imageTag/imageTagsforceTagstrue/forceTagsdockerDirectory${project.basedir}/dockerDirectory!--最后 resource 节点中再配置一下 jar 的位置和名称即可--resourcesresourcetargetPath//targetPathdirectory${project.build.directory}/directoryinclude${project.build.finalName}.jar/include/resource/resources/configuration
/plugin六、打包运行
接下来对项目进行打包打包完成后项目会自动构建成一个镜像并且上传到 Docker 容器中打包方式如下 打包过程会稍微有一点旧因为还包含了镜像的构建特别是第一次打包需要下载基础镜像会更慢一些。
部分打包日志如下项目构建过程: 项目打包成功之后我们就可以在 Docker 容器中看到我们刚刚打包成的镜像了如下
运行方式一
此时我们可以直接在 Linux 上像创建普通容器一样创建这个镜像的容器然后启动执行如下命令即可
docker run -d --name javaboy -p 8080:8080 javaboy/docker:0.0.1启动成功之后我们就可以访问容器中的接口了。
但是这种操作显然还是有点麻烦结合我们一开始安装的 Docker 插件这个运行步骤还可以做进一步的简化。
运行方式二
此时我们的 IDEA 中多了一个选项就是 docker如下 点击左边的绿色启动按钮连接上 Docker 容器连接成功之后我们就可以看到目前 Docker 中的所有容器和镜像了当然也包括我们刚刚创建的 Docker 镜像如下 此时我们选中这个镜像右键单击即可基于此镜像创建出一个容器如下图 选择 Create container然后填入容器的一些必要信息配置一下容器名称镜像 ID 会自动填上暴露的端口使用 Specify 即可然后写上端口的映射关系 配置完成后点击下方的 run 按钮就可以开始运行了。运行日志如下 注意这个日志是在 Docker 的那个窗口里打印出来的。
项目运行成功之后在浏览器输入远程服务器的地址就可以访问了 Spring Boot 项目就算顺利发布到远程 Docker 容器中
使用 Jib 部署 Spring Boot
一个小小的 helloworld 构建成镜像之后竟然都有 660 MB
所以采用另一种方案Jib这是谷歌开源的一个容器化运行方案使用它我们将 Spring Boot 进行容器化部署只要两步
配置Maven Plugin构建
开发人员可以不需要任何 Docker 相关的技能就能将 Spring Boot 项目构建成 Docker 中的镜像而且还可以“顺便”将镜像 push 到 register 上极大的简化了部署过程。 利用镜像分层和注册表缓存来实现快速、增量的构建。 Jib 会自动读取项目的构建配置代码组织到不同的层依赖项、资源、类中然后它只会重新构建和推送发生变更的层。在项目进行快速迭代时Jib 只将发生变更的层推送到 registers 来缩短构建时间
一、准备一个Docker Hub账号https://hub.docker.com/注册
二、创建SpringBoot工程 RestController
public class HelloController {GetMapping(/hello)public String hello() {return hello jib;}
}在 pom.xml 中添加上 Jib 的插件如下
!--首先就是版本号的问题这里使用的是 1.7.0 网上有的教程比较老用的 0.x 的版本老的版本在配置 Docker 认证的时候非常麻烦所以版本这块建议大家使用当前最新版。--
plugingroupIdcom.google.cloud.tools/groupIdartifactIdjib-maven-plugin/artifactIdversion1.7.0/versionconfigurationfrom!--from 中的配置表示本镜像构建所基于的根镜像为 openjdk:alpine--imageopenjdk:alpine/image/fromto!--o 中的配置表示本镜像构建完成后要发布到哪里去.如果是发布到私有镜像站就写自己私有镜像站的地址如果是发布到 Docker Hub 上就参考这里的写法 docker.io/wongsung/dockerjib其中 wongsung 表示你在 Docker Hub 上注册的用户名dockerjib 表示你镜像的名字可以随意取--imagedocker.io/wongsung/dockerjib/imagetags!--tags 中配置的是自己镜像的版本--tagv1/tag/tagsauth!--auth 中配置你在 Docker Hub 上的用户名/密码--usernamewongsung/usernamepassword你的密码/password/auth/to/configurationexecutionsexecutionphasepackage/phasegoalsgoalbuild/goal/goals/execution/executions
/plugin配置完成后在命令行执行如下命令将当前下项目构建成一个 Docker 镜像并 push 到 Docker Hub
mvn compile jib:build构建完成后我们在 Docker Hub 上就能看到自己的镜像了
接下来启动 Docker 在 Docker 中执行如下命令拉取镜像下来并运行
docker run -d --name mydockerjib -p 8080:8080 docker.io/wongsung/dockerjib:v1【注意】
这种方式是将项目构建成镜像后并 push 到 registers 上这种构建方式不需要你本地安装 Docker如果你需要在本地运行镜像那当然需要 Docker单纯的构建是不需要 Docker 环境的
本地构建
①、如果你电脑本地刚好安装了 Docker 有 Docker 环境那么也可以将项目构建成本地 Docker 的镜像
查看一下本地镜像
看到只有 MySQL 镜像然后执行如下命令构建本地镜像
mvn compile jib:dockerBuild看到如下构建日志信息表示构建成功 构建完成后我们再来看本地镜像