Docker应用系列(四)| 部署java应用
本示例基于Centos 7,假设目前使用的账号为release,拥有sudo权限。
由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速器,可参考此文进行配置。
主机上服务安装步骤如下:
1. 安装docker服务:
sudo yum install -y docker
2. 启动docker服务:
sudo service docker start
3. 查找centos镜像:
sudo docker search centos
4. 下载官方centos镜像:
sudo docker pull docker.io/centos
5. 下载完后可检查镜像:
sudo docker images
6. 在主机上创建具备java和unzip功能的centos镜像:
mkdir ~/centos-java
cd ~/centos-java
touch Dockerfile
vi Dockerfile
#内容如下:
from docker.io/centos:latest
run yum install -y java
run yum install -y unzip
创建好Dockerfile后,我们build这个镜像:
cd ~/centos-java sudo docker build -t centos/java:latest .
build成功后,可通过如下命令查看最新的镜像列表:
sudo docker images
7. 我们各个java应用(假定都为.zip格式的打包文件,不依赖于web服务器),都将基于该镜像上,创建新的应用镜像。
mkdir ~/myapp
cd ~/myapp
touch Dockerfile
vi Dockerfile
#内容如下:
from centos/java:latest
run mkdir -p /opt/myapp
copy myapp.zip /opt/myapp
run unzip /opt/myapp/myapp.zip -d /opt/myapp
run chmod +x /opt/myapp/startup.sh
expose
cmd ["/opt/driver2/startup.sh"]
内容说明:
- myapp.zip 是我们的java应用,需要你准备好放在~/myapp目录下,该文件会被拷入新镜像中的/opt/myapp目录下
- startup.sh脚本参考内容为:
#!/bin/sh
cd /opt/myapp
java -server -Xmx2g -Xms2g -cp .:myapp-1.0.jar:./lib/* com.yourcompany.Application
- 需要注意的是java以前台方式运行,不要以后台方式(nohup)运行,否则docker容器启动后很快就会停止
- 另外假定你的应用的输出日志为 /var/log/myapp下
创建好Dockerfile后,build新镜像:
cd ~/myapp sudo docker build -t myapp:latest .
build成功后,就可以得到一个名称为myapp的新镜像
8. 运行新镜像:
sudo mkdir -p /var/log/myapp
sudo docker run -p : -v /var/log/myapp/:/var/log/myapp -v /etc/localtime:/etc/localtime:ro --name myapp -d myapp
命令说明:
-v /etc/localtime:/etc/localtime:ro的目的是为了使容器时间与主机时间同步一致
9. 检查容器启动情况:
容器的状态应该为Up,可执行如下观察:
sudo docker ps
若未能起来,我们可以观察日志,了解出错原因:
sudo docker logs 容器id
当然,成功起来后,可以在主机的目录下查看日志以方便跟踪:
tail -f -n /var/log/myapp/app.log
Docker应用系列(四)| 部署java应用的更多相关文章
- Docker & Kubenetes 系列四:集群,扩容,升级,回滚
本篇将会讲解应用部署到Kubenetes集群,集群副本集查看,集群自愈能力演示,集群扩容,滚动升级,以及回滚. 本篇是Docker&Kubenetes系列的第四篇,在前面的篇幅中,我们向Kub ...
- docker 运行tomcat 并部署 java web项目
以下tomcat官方镜像中tomcat:7 和tomcat:8的目录. CATALINA_BASE: /usr/local/tomcat CATALINA_HOME: /usr/local/tomca ...
- JVM系列(四):java方法的查找过程实现
经过前面几章的简单介绍,我们已经大致了解了jvm的启动框架和执行流程了.不过,这些都是些无关痛痒的问题,几行文字描述一下即可. 所以,今天我们从另一个角度来讲解jvm的一些东西,以便可以更多一点认知. ...
- Docker & k8s 系列三:在k8s中部署单个服务实例
本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...
- Docker & k8s 系列一:快速上手docker
Docker & k8s 系列一:快速上手docker 本篇文章将会讲解:docker是什么?docker的安装,创建一个docker镜像,运行我们创建的docker镜像,发布自己的docke ...
- Docker & k8s 系列二:本机k8s环境搭建
本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...
- java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现
java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析 ...
- docker 部署 java 项目
Docker Docker官方网址: https://docs.docker.com/ 英文地址 Docker中文网址: http://www.docker.org.cn/ 中文地址 Docker是 ...
- docker - 从安装到部署一个web应用(go、java)
一:安装docker 1.https://docs.docker.com/engine/installation/binaries/ 下载docker最新版二进制tar.gz linux下: wget ...
随机推荐
- CF757 C hash
一种数字可以变成另一种数,要求每组中变换前后各种数字数量不变,问方案数 对现有每组中的每个数字构造出现在各个组情况的序列,如2 出现在第一组和第二组各一次那么就要加入组别的标号1,2,出现重复次仍要加 ...
- [ERROR] Too many connections 尚未解决
[ERROR] - com.alibaba.druid.support.logging.Log4j2Impl.error(Log4j2Impl.java:53) - create connection ...
- weblogic nmap扫描脚本
CVE-2018-2894 / Nmap利用脚本,可批量批量快速扫描getshell.检测漏洞.利用漏洞 地址:https://github.com/Rvn0xsy/nse_vuln/tree/ma ...
- linux常用命令一些解释
ls 命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文 件及文件夹清单. 通过ls 命令不仅可以查看li ...
- 宝塔Linux面板新手安装教程【转】
一.使用远程连接软件 (如 Putty.XShell) 连接你的Linux服务器,本教程以 Putty 为例. 1.动 Putty.exe 程序,进入 Putty 主界面. 2.在 Host Name ...
- 63.UniquePaths II---dp
题目链接 题目大意:与62题类似,只是这个题中间有障碍. 法一:dfs,依旧超时.代码如下: public int uniquePathsWithObstacles(int[][] obstacleG ...
- Linux 上配置 NTP SERVER
在CENTOS 6.2上面安装配置NTP SERVER 安装NTP:yum install ntp 配置时间源vi /etc/ntp.confserver 210.72.145.44server nt ...
- selenium grid应用1-多浏览器执行用例
driver =webdriver.Remote(command_executor=’http://127.0.0.1:4444/wd/hub’, desired_capabilities=Desir ...
- ASP.NET中的状态保持
1.ASP.NET中的状态保持解决方案 2.常用的状态报保持方式 view state ASP.Net的.aspx页面特有,页面级的,就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式(b ...
- MySQL启动很慢的原因
我们在启动MySQL的时候,常常会遇到的是, 当执行启动命令后,它会"Start MySQL ....." 一直不停的执行,也不中断,也不成功 这里会出现此现象的原因有以下三条: ...