Docker 部署应用、jar 工程 docker 方式部署

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

1. 把要部署的工程打成一个jar包。(我的工程叫 gentle )

    打 jar 的方法:超简单方法: Intellij Idea 把 java 工程打成可运行的 jar

2. 把 jar 包上传到 服务器确定目录下。

   我是用 rz 命令直接选择 jar 上传到我存放 jar 的目录:/root/jiangyu/dockerfiles/jar

3.编写超级简单版本的 dockerfile 文件:

# jdk 是一个已有的包含 jdk 的镜像FROM jdk#  作者签名MAINTAINER JY#  简化 jar 的名字路径 (#:表示注释掉)COPY jar/gentle-1.0-SNAPSHOT.jar /app.jar#  执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就执行此行)CMD java -jar /app.jar#  设置对外端口为 8089EXPOSE 8089

4. 通过 dockerfile 文件生成本工程的镜像:

# -t :给镜像取名为 gentle 
docker build -t gentle . 

此行命令最后有一个点,表示使用当前上下文中的 dockerfile 文件 。

docker images 查看原有镜像 ,并构建新镜像:gentle:

从第 2 次查看镜像可以确认,新的镜像 gentle 已构建成功。

5. 通过镜像启动容器,命令如下:


#  -d 后台运行、
#  最后一个 gentle 是引用的镜像的名字、
#  --name jy_gentle 给容器取名为 jy_gentle (取名参数前面是两短横线)、
#  -p 8089:8089 端口映射,注意是小写 p 
# 前一个 8089 是对外浏览器上访问的端口,后一个 8089 是容器内工程本身的端口,两者可不一样docker run -d -p 8089:8089 --name jy_gentle gentle 

docker ps -a :查看当前服务器上所有容器。

从第 2 次查看可知容器已成功启动。黄框中的是各个容器使用的镜像的名字,蓝框中的是各个容器的名字。

 

我的工程设置的本地端口也是8089 

6. postman 和浏览器 顺利请求到 gentle 工程中的接口,说明部署成功

7. gentle 工程中接口实现:

 

部署完啦 ,走,出门溜达溜达,找点吃的去  ...

 

--------------------------------

2018.11.28 后记,每次改代码都要重新部署依旧很麻烦,于是写了个很简单的脚本,运行就部署。

脚本内容只是把命令整合到一起了而已:

cd gentle_code# 备份原代码
tar -zcvf gentle.tar ./gentle# 删除原代码文件夹
rm -rf gentle# 拉取代码
echo -e "\033[32m\n从git拉取代码\n\033[0m"
git clone https://gitee.com/FJ_WoMenDeShiJie/gentle.git
echo -e "\033[32m\n代码拉取完成\n\033[0m"# 工程打包
cd gentle
rm -rf ./target/gentle-1.0-SNAPSHOT.jarecho -e "\033[32m\n开始打jar包\n\033[0m"
mvn install -Dmaven.test.skip=true
rm -rf ../../jar/gentle-1.0-SNAPSHOT.jar
cp ./target/gentle-1.0-SNAPSHOT.jar ../../jar
echo -e "\033[32m\njar包完成\n\033[0m"# 删除原镜像
docker rmi gentle &> /dev/null
echo -e "\033[32m\n删除原镜像\n\033[0m"
echo -e "\033[32m\n构建新镜像\n\033[0m"cd ../../
docker build -t gentle .
echo -e "\033[32m\n新镜像构建成功\n\033[0m"# 删除原容器
docker rm -f gentle# 启动容器
docker run -d -p 8089:8089 --name gentle gentle
echo  -e "\033[32m\n后端工程部署完成\n\033[0m"

 运行效果:

postman 请求,返回的已经有新接口数据了。

 

另外:前端工程部署脚本见:前端 vue 工程 Docker 方式部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

流浪不是我的初衷 ... ...

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 或许,我从来就是一个习惯沉默的人 ... 或许,我从来就不善于倾述 ... 会有难过的时候,会有觉得累的…

第二阶段冲刺(2)

1、整个项目预期的任务量 (任务量 所有工作的预期时间)和 目前已经花的时间 (所有记录的 ‘已经花费的时间’),还剩余的时间(所有工作的 ‘剩余时间’) ; 所有工作的预期时间&#…

VS2008+OpenCL环境配置

1. 配置.cl文件支持: 1.1. 打开VS2008, 工具->选项->文本编辑器->文件扩展名,添加一个新的扩展名,指定编辑器为Microsoft Visual C 。这样在OpenCL文件中就能显示C的语法高亮了。 1.2. 配置OpenCL语法高亮 - 打开目录~\NVIDIA Corpo…

第十二周学习进度报告

代码时间:17小时左右, 代码量:300行左右, 阅读:一个app的诞生20页;构建之法30页 知识:抽象典型用户(具有代表性)和场景,去设计相应功能。 转载于:https://www…

我的桃花源

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 看了一个动画片(《猫与桃花源》),画风和内容并不是我最偏好的... 但故事结尾的旁白和歌曲却打动了一…

promise实例

不废话,粘代码 function ajax(method, url, data) {let request new XMLHttpRequest();return new Promise(function (resolve, reject) {request.onreadystatechange function () {if (request.readyState 4) {if (request.status 200) {resolve(request.respo…

华为路由器配置DHCP中继

DHCP(动态主机配置协议)理论知识:DHCP主要用来为客户机自动配置I P地址相关的网络参数,包括IP地址、子网掩码、默认网关、DNS服务器等。 DHCP 通信为广播的方式,因此当需要 DHCP 服务器为不同广播域(路由或 VLAN 网段)…

基于GPU的K-Means聚类算法

聚类是信息检索、数据挖掘中的一类重要技术,是分析数据并从中发现有用信息的一种有效手段。它将数据对象分组成为多个类或簇,使得在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别很大。作为统计学的一个分支和一种无监督的学习…

IntelliJ IDEA 工具篇之如何切换 git 分支

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1、进入项目和工程。 2、点击右下角的git:master,然后选择origin/master,然后选择你要切换的分支,我…

IDEA---SpringBoot同一个项目多端口启动

-Dserver.port xxxx 转载于:https://www.cnblogs.com/tonyzt/p/10987116.html

好程序员Web前端分享无法忽视的JavaScript技巧

好程序员Web前端分享无法忽视的JavaScript技巧。在大家从事web前端的工作中,很容易忽视一些JavaScript的小技巧,今天为大家总结了一些容易被大家忽略的技巧,希望能够对大家有所帮助。1、过滤唯一值Set类型是在ES6中新增的,它类似于…

GPU通用计算调研报告

摘要:NVIDIA公司在1999年发布GeForce256时首先提出GPU(图形处理器)的概念,随后大量复杂的应用需求促使整个产业蓬勃发展至今。GPU在这十多年的演变过程中,我们看到GPU从最初帮助CPU分担几何吞吐量,到Shader…

git 图形化工具 GitKraken 的使用 —— 分支的创建与合并

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 分支管理是Git工作流的重点 在之前的文章中通过GitKraken可以很清楚的看到,每一次commit,git把他们串成了一条线…

ubuntu11.04下CUDA4.0的安装与配置

1:下载CUDA 4.0 安装官网最新的显卡驱动: 安装方法可以参考: 《Ubuntu11.04下安装Nvidia显卡驱动的方法》 然后从NVIDIA网站(http://developer.nvidia.com/cuda-downloads)下载 CUDA Toolkit for Ubuntu Linux 10.10&a…

GitKraken - 简单教程

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 简单介绍:外观 GitKraken首页预览图 常用快捷键 模糊搜索:(cmd p) 在进行模糊搜索的时候会在当前页面弹出一个…

LeetCode刷题第二天——3Longest Substring Without repeating character 4 Median of Two Sorted Arrays...

混淆点: 子串 连续 子序列 可以不连续 知识点: HashMap: 出现问题: 1.使用unordered_map头文件时报错 #error This file requires compiler and library support for the ISO C 2011 standard. This support is currently experi…

【BZOJ 3339 / BZOJ 3585 / luogu 4137】Rmq Problem / mex

【原题题面】传送门 【题解大意】 都说了是莫队练习题。 考虑已知[l,r]区间的mex值时&#xff0c;如何求[l1,r]的mex值。 比较a[l1]与已知ans的大小&#xff0c;如果a[l1]>ans或者a[l1]<ans&#xff0c;均对答案没有影响。 如果a[l1]ans&#xff0c;考虑找到一个比当前an…

postman 无法正常返回结果 Could not get any response

在浏览器输入地址可以返回结果&#xff0c;但是由于返回的json没有格式&#xff0c;看起来比较麻烦&#xff0c;用postman却报错Could not get any response。 可以注意到下面写了可能的情况&#xff1a;比如服务器无响应&#xff08;由于浏览器可以访问&#xff0c;所以排除…

在Windows 下使用OpenCL

目前&#xff0c;NVIDIA和AMD的Windows driver均有支援OpenCL&#xff08;NVIDIA的正式版driver是从195.62版开始&#xff0c;而AMD则是从9.11版开始&#xff09;。NVIDIA的正式版driver中包含OpenCL.dll&#xff0c;因此可以直接使用。AMD到目前为止&#xff0c;则仍需要安装其…

Java中方法重载

方法重载&#xff1a;指在同一个类中&#xff0c;允许存在一个以上的同名方法&#xff0c;只要它们的参数列表不同即可&#xff0c;与修饰符和返回值类型无关。参数列表&#xff1a;个数不同&#xff0c;数据类型不同&#xff0c;顺序不同。重载方法调用&#xff1a;JVM通过方法…