Docker部署tomcat

本文档详细介绍了如何在Docker中下载、启动Tomcat镜像,并针对官方镜像存在的命令缺失和webapps目录为空的问题进行了解决。通过从webapps.dist目录复制内容到webapps,成功部署了项目。同时提出了外部映射路径以方便外部部署项目的思路,以及讨论了在Docker中直接运行数据库的风险。
摘要由CSDN通过智能技术生成

1. 下载Tomcat镜像

首先可以去官网查看想要下载的tomcat版本:https://hub.docker.com/_/tomcat

官方的使用(不推荐):

# 官方文档解释
# -it :交互模式
# --rm:容器启动成功并退出以后容器就自动移除,一般在测试情况下使用!
docker run -it --rm tomcat

推荐先下载镜像再使用,如下:

[root@localhost /]# docker pull tomcat

# 测试是否下载成功docker images
[root@localhost /]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              040bdb29ab37        3 weeks ago         649MB
nginx               latest              f6d0b4767a6c        3 weeks ago         133MB
centos              latest              300e315adb2f        8 weeks ago         209MB
[root@localhost /]# 

2. 启动

把容器外部的3355映射给容器内部的8080

# -d 后台运行
# --name 给容器起名字
# -p 暴露端口。宿主机端口:容器内部端口
docker run -d -p 3355:8080 --name tomcat01 tomcat

3. 进入Tomcat

# 进入Tomcat
[root@localhost /]# docker exec -it tomcat01 /bin/bash
root@90c144b3aceb:/usr/local/tomcat# ls
BUILDING.txt	 NOTICE		RUNNING.txt  lib	     temp	   work
CONTRIBUTING.md  README.md	bin	     logs	     webapps
LICENSE		 RELEASE-NOTES	conf	     native-jni-lib  webapps.dist

ll#出错,说明官方的Tomcat连ll命令都没有,命令被阉割
root@90c144b3aceb:/usr/local/tomcat# ll
bash: ll: command not found
root@90c144b3aceb:/usr/local/tomcat# 

ls -al # 发现存在webapps目录(tomcat项目都放在webapp)

root@90c144b3aceb:/usr/local/tomcat# ls -al
total 128
drwxr-xr-x. 1 root root    30 Jan 13 08:25 .
drwxr-xr-x. 1 root root    20 Jan 13 08:19 ..
-rw-r--r--. 1 root root 18982 Dec  3 11:48 BUILDING.txt
-rw-r--r--. 1 root root  5409 Dec  3 11:48 CONTRIBUTING.md
-rw-r--r--. 1 root root 57092 Dec  3 11:48 LICENSE
-rw-r--r--. 1 root root  2333 Dec  3 11:48 NOTICE
-rw-r--r--. 1 root root  3257 Dec  3 11:48 README.md
-rw-r--r--. 1 root root  6898 Dec  3 11:48 RELEASE-NOTES
-rw-r--r--. 1 root root 16507 Dec  3 11:48 RUNNING.txt
drwxr-xr-x. 2 root root  4096 Jan 13 08:25 bin
drwxr-xr-x. 1 root root    22 Feb  5 15:40 conf
drwxr-xr-x. 2 root root  4096 Jan 13 08:25 lib
drwxrwxrwx. 1 root root   177 Feb  5 15:40 logs
drwxr-xr-x. 2 root root   134 Jan 13 08:25 native-jni-lib
drwxrwxrwx. 2 root root    30 Jan 13 08:25 temp
drwxr-xr-x. 2 root root     6 Jan 13 08:25 webapps
drwxr-xr-x. 7 root root    81 Dec  3 11:45 webapps.dist
drwxrwxrwx. 2 root root     6 Dec  3 11:43 work

进入webapps,却发现webapps是空的

root@90c144b3aceb:/usr/local/tomcat# cd webapps
root@90c144b3aceb:/usr/local/tomcat/webapps# ls
root@90c144b3aceb:/usr/local/tomcat/webapps# 

上述操作之后我们不难发现两个问题:

  1. linux命令少了
  2. 没有webapps

导致上述问题出现的原因:官方的镜像是阉割版的,默认是最小的镜像,会把所有不必要的都剔除掉。保证最小可运行的环境


接下来我们开始在webapps下部署一些项目
执行命令如下:

cd ..
ls # 发现有webapps.list

cd webapps.dist
ls# 发现有root,因此我们可以把webapp.list的内容复制到webapps或把webapps.list改个名字
cd ..
cp -r webapps.dist/* webapps # 把webapps.dist下的所有内容拷贝到webapps下
cd webapps
ls
至此相当于我们成功在webapps下部署了一些项目

整个执行过程

root@90c144b3aceb:/usr/local/tomcat/webapps# cd ..
root@90c144b3aceb:/usr/local/tomcat# ls
BUILDING.txt	 NOTICE		RUNNING.txt  lib	     temp	   work
CONTRIBUTING.md  README.md	bin	     logs	     webapps
LICENSE		 RELEASE-NOTES	conf	     native-jni-lib  webapps.dist
root@90c144b3aceb:/usr/local/tomcat# cd webapps.dist
root@90c144b3aceb:/usr/local/tomcat/webapps.dist# ls
ROOT  docs  examples  host-manager  manager
root@90c144b3aceb:/usr/local/tomcat/webapps.dist# cd ..
root@90c144b3aceb:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@90c144b3aceb:/usr/local/tomcat# cd webapps
root@90c144b3aceb:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@90c144b3aceb:/usr/local/tomcat/webapps# 

思考题:我们部署项目每次都需要进入容器十分麻烦,若可以在容器外部提供一个映射路径,webapps,在外部放置项目,就自动同步到内部将十分方便

如今的docker包含了tomcat+网站,若把容器删了将面临着删库跑路的风险。容易想到docker中安装mysql也是不安全的(把docker容器删除掉,同样面临删库跑路风险)。因此急需解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值