docker部署运行tomcat和springboot项目
程序员文章站
2024-02-02 22:55:10
...
docker 很方便的一个容器很早就使用过 今天就想趁着突然而来的性质记录一下
编写tomcat的dockerfile镜像和springboot的dockfile的镜像
首先介绍一下docker
Docker 是一个开源的应用容器引擎,
让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,
然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口。
<摘自百度百科 哈哈????>
在介绍一下docker常用的命令
我看其他地方都是给的一堆命令说明 我就拿几个常用的举例说明哦
命令 | 作用 |
---|---|
docker version | 查看docker版本 |
docker info | 查看docker系统信息 |
docker pull 镜像名称 | 下载镜像 |
docker images | 所有镜像列表 |
docker build -t 标签名 目录 | 构建一个镜像 -t表示为镜像命名 目录一般放在当前文件夹下用.点 |
docker rmi 镜像名称或镜像ID | 删除镜像 加上-f表示强制删除 |
docker run 镜像名称 | 启动镜像 |
docker ps | 列表查看容器 -a查看所有 -q只显示容器ID 等 |
docker stop 容器名称或容器ID | 停止容器 |
docker start 容器名称或容器ID | 运行容器 |
docker restart 容器名称或容器ID | 重启容器 |
差不多常用的就是上面的了 我们一会也要用到上面一部分命令的
好了我们准备开始啦 安装docker就不说了
因为这篇博客主要是编写运行tomcat和springboot的dockerfile的
首先我们要准备必不可少的JDK和TOMCAT了再就是一个Dockerfile文件
准备好之后不急 我们熟悉一下Dockerfile里面的命令是怎嚒样的
这回我直接拿到我认为写的很好的图片
都熟悉的差不多了之后
打开Dockerfile文件 本来想用截图的 因为要你们自己写一遍印象才深刻嘛
但是一想到你们觉得不能直接复制就直接走了 那不是很可惜 所以
#开始
#基础镜像使用centos
FROM centos
#作者 姓名+邮箱 当然不是我真正的邮箱啦
MAINTAINER lsj<aaa@qq.com>
#把服务器的jdk添加到镜像里自动解压
ADD jdk-8u191-linux-x64.tar.gz /usr/local/
#把服务器的tomcat添加到镜像里自动解压
ADD apache-tomcat-9.0.38.tar.gz /usr/local/
#运行安装vim命令
RUN yum -y install vim
#配置工作目录
ENV MYPATH /usr/local/
WORKDIR $MYPATH
#配置jdk环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#配置tomcat环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.38
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.38
#配置总环境变量
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#开放8080端口
EXPOSE 8080
#运行tomcat并输出日志
CMD /usr/local/apache-tomcat-9.0.38/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.38/bin/logs/catalina.out
#结束
把上面的命令写进Dockerfile里面 最好是你们自己动手写一遍 在理解一下命令的意思 这样会印象很深刻的
写好都准备好之后
我们在当前目录查看一下镜像列表
docker images
是不是除了一个hello-world就没有其他镜像了
在当前目录下执行构建镜像命令
docker build -t tomcat-9 .
tomcat-9是我们自己给镜像命的名
后面这个点.就是当前目录的意思
biu
biu
biu
执行完成 无报错之后 在查看一下列表
我这里已经完成了 然后查看列表
多了两个镜像 一个centos 和一个tomcat
当然了 tomcat-9 是我们创建的镜像 centos使我们构建的基础镜像 基础镜像是必须的
到这里我们的镜像完成了
接下来就要运行我们的镜像了
docker run -d -p 8066:8080 --name energyWeb -v /home/centos/docker/web:/usr/local/apache-tomcat-9.0.38/webapps/web -v /home/centos/docker/logs:/usr/local/apache-tomcat-9.0.38/logs tomcat-9
-d是指后台运行 -p是把容器内的8080端口直挂到服务器的8066端口给外部访问
所以我们访问8066就相当于访问容器内tomcat的8080端口 懂了吧
--name给容器命名
-v是挂载文件 什么意思呢就是 把服务器的web文件夹内所有内容同步到容器内目录下的web下
总的说就是服务器文件下增删改 容器内部同步增删改 所以我们只要把要发布的文件放到服务器的web下容器自动同步 是不是很方便 后面那个是日志输入地址
看到下面的一串地址没有 已经运行成功了 是不是很激动 但是你们要对应好你们的tomcat哦别写错了
我们可以进入到docker容器的目录下看看 是否有文件
docker exec -it 8e5c782c9979ac /bin/bash 后面是那长串字符只要一部分就可以了
我们可以看到里面有我们的tomcat还有jdk 激不激动 反正我挺激动
继续进入tomcat看看
对了 你们发现没有进入容器默认就到了/usr/local目录下
因为我们写dockerfile文件的时候设置了默认工作目录了的
下面是tomcat文件内容
看到我们tomact的工作目录没 哈哈哈 那个web就是我们设置自动同步的web文件目录哦只不过我去的名字不一样
exit退出目录
接下来我们试着访问一下 看看泵不能访问到 tomcat
完美 后面我们直接把项目放到挂载文件里面就可以同步发布了 是不是很激动!!!
好咯 因为我是前后端分离嘛 所以上面我只是用来运行前端项目的 接下来该springboot了
首先肯定要准备一个打包好的springboot项目jar嘛
把jar和dockerfile放到一个目录下
编写dockerfile咯
#开始
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER lsj<aaa@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包拷贝到容器中并更名为app.jar
COPY *.jar app.jar
#开放8080端口
EXPOSE 8080
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#结束
运行时为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
VOLUME主要是为了持久化数据需要用到的就是如果把容器删掉那么容器里面的数据都会删掉
那么为了数据能够持久到服务器需要这个 其实我也还没玩透这个东西 我还要去研究研究
好了 直接运行构建镜像
docker build -t springboot .
成功后运行镜像
docker run -d -p 8081:8081 --name myBoot springboot
ok 成功 下面的步骤其实 和上面 也就差不多了
大家去试试吧 我呢还要研究研究构建springboot项目更细致的file文件
如果实在觉得 运行springboot写的不够详细 可以找我
我的微信 AiMyHear
上一篇: apktool反编译apk,并重新打包
下一篇: 如何在windows下运行nasm
推荐阅读
-
Springboot项目打包部署通过Java-jar运行
-
SpringBoot 项目上传阿里云,部署,打包,运行
-
docker部署运行tomcat和springboot项目
-
jenkins部署springboot多模块项目至docker容器运行
-
在IDEA内使用Tomcat热部署SpringBoot项目
-
使用 Docker 部署 SpringBoot 项目 (Jar 包、War包)
-
jenkins部署SpringBoot的jar包项目到docker容器并运行
-
Linux Docker运行springboot项目的步骤详解
-
windows环境下docker+jenkins实现springboot项目的自动部署
-
Docker部署SpringBoot项目(centos7.4)