docker部署运行tomcat和springboot项目

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<lsj@gmail.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<lsj@gmail.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



加一个 运行mysql的命令 带 挂载目录
docker run -p 3306:3306 --name mysql  
-v /home/mysql/conf/my.cnf:/etc/my.cnf
-v /home/mysql/logs:/var/log/mysql 
-v /home/mysql/data:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=123456 -d mysql

还有my.cnf的配置

 [mysqld]
  pid-file        = /var/run/mysqld/mysqld.pid
  socket          = /var/run/mysqld/mysqld.sock
  datadir         = /var/lib/mysql
  
  user=mysql
  character-set-server=utf8
  default_authentication_plugin=mysql_native_password
  secure_file_priv=/var/lib/mysql
  expire_logs_days=7
  sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  max_connections=1000
  ​
  [client]
  default-character-set=utf8
  ​
  [mysql]
  default-character-set=utf8
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值