[Docker] 安装tomcat运行war包

前文链接

[Docker] 入门教程
https://www.jianshu.com/p/7b3737df847d
ps: 不会安装的可以过来看看

前言

最近由于工作需要, 所以就着手研究了一下docker如何安装三条腿的猫, 所以下面就来记录一下.


一.快速开始

这里介绍两种方法(官方镜像安装和Dockerfile安装):

1.docker官方镜像安装

首先拉取镜像, 会自动拉取最新版本 - docker pull tomcat

[root@master ~]# docker pull tomcat
Using default tag: latest
Trying to pull repository docker.io/library/tomcat ...
latest: Pulling from docker.io/library/tomcat
ab1fc7e4bf91: Pull complete
35fba333ff52: Pull complete
f0cb1fa13079: Pull complete
3d79c18d1bc0: Pull complete
ff1d0ae4641b: Pull complete
8883e662573f: Pull complete
adab760d76bd: Pull complete
86323b680e93: Pull complete
14a2c1cdce1c: Pull complete
ee59bf8c5470: Pull complete
067f988306af: Pull complete
Digest: sha256:296b26baeee450a9814b2733e9d085f3d26af1c48e5fdc2000496ff7e12bc897
Status: Downloaded newer image for docker.io/tomcat:latest

查看镜像 - docker images

[root@master ~]# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
objcat/tomcat                                         v1                  96ffa825838a        2 days ago          825 MB
docker.io/objcat/tomcat                               latest              2b0ce1615bdf        3 days ago          743 MB
docker.io/tomcat                                      latest              7ee26c09afb3        4 days ago          462 MB
docker.io/nginx                                       latest              42b4762643dc        5 days ago          109 MB
docker.io/centos                                      latest              1e1148e4cc2c        7 weeks ago         202 MB
registry.access.redhat.com/rhel7/pod-infrastructure   latest              99965fb98423        15 months ago       209 MB

我们可以看到有一个镜像叫docker.io/tomcat这就是docker的官方镜像.

接下来我们运行一下

docker run -idt -p 8081:8080 tomcat

这里把tomcat的8080端口映射到服务器的8081, 我们访问一下试试吧!

是不是非常简单呢?

下面我们就来运行一个war包, 首先我们要了解一下tomcat在虚拟机中的文件目录, 所以我们先进入虚拟机

[root@master ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
b2efd725feed        tomcat              "catalina.sh run"   5 minutes ago       Up 5 minutes        0.0.0.0:8081->8080/tcp   frosty_pike
[root@master ~]# docker exec -it b2efd725feed bash
root@b2efd725feed:/usr/local/tomcat# ls
BUILDING.txt     LICENSE  README.md  RUNNING.txt  conf     lib   native-jni-lib  webapps
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin          include  logs  temp        work
root@b2efd725feed:/usr/local/tomcat#

我们可以发现有一个叫做webapp的目录, 我们的war包放到这里就可以运行了

下面我们就来准备一个war包, 目录是这样的

打包

接下来我们就运行这个war, 首先是发送文件上去

scp /Users/objcat/IdeaProjects/test/target/test.war root@xxx.xxx.xxx.xxx:/test.war

xxx.xxx.xxx.xxx是你的ip地址, 如果文件就在本地可以不用这一步操作.

然后改写一下docker命令

docker run -idt -p 8081:8080 -v /test.war:/usr/local/tomcat/webapps/test.war tomcat

这里面的参数都是非常易懂的, 比如-p就是映射端口, -v就是挂载, 我在之前的教程也说过了, 如果实在不明白可以去文章开头看看前文的docker教程, 我们继续.

之后我们再次访问一下

发现网页和接口都能访问通了, 证明配置是正确的, 本节结束.

2.Dockerfile安装

这里直接上脚本了, 如果不知道Dockerfile的用法, 去文章开头学习.

首先新建Dockerfile文件

cd /
vi Dockerfile

写入脚本

# 基于镜像
FROM centos
# 作者
MAINTAINER objcat
# 安装环境
RUN yum install java -y \
&& curl -O http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz \
&& tar -zxvf apache-tomcat-9.0.14.tar.gz \
&& mv apache-tomcat-9.0.14 tomcat \
&& rm -rf apache-tomcat-9.0.14.tar.gz
# 程序启动默认运行tomcat
CMD [ "/tomcat/bin/catalina.sh", "run" ]

然后编译生成镜像, 注意.一定别忘写了

docker build -t objcat/tomcat:v1 .

然后正常运行就可以了

docker run -idt -p 8081:8080 -v /test.war:/tomcat/webapps/test.war objcat/tomcat:v1

二.文章拓展

经过上面的文章, 想必你已经成功的搭建出了tomcat环境, 那么接下来我们就来拓展一些常用的功能.

温馨提示: 我使用的tomcat自己构建的, 你们的路径和我的不一定会相同, 所以请根据实际情况灵活应变.

1.开启tomcat应用管理功能

这里使用两种方法来做:

方法1: 在内部修改完成后commit
方法2: 使用-v挂载配置文件

方法1:

我们在做如图操作的时候经常是会出现上述的报错, 解决这个问题的方法很简单, 这里就简单的说一下, 首先复制上面的两行, 先修改一番, 把用户名和密码换成你喜欢的, 这里都换成了tomcat

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

然后编辑容器内的tomcat配置文件

docker ps
docker exec -it 646ebb97b6ba bash
vi /tomcat/conf/tomcat-users.xml

之后还需要修改ip访问规则, 否则无法访问

vi /tomcat/webapps/manager/META-INF/context.xml

注释掉这行即可

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

之后我们使用commit来保存镜像

➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
6dbbd260e192        objcat/tomcat:v5    "/tomcat/bin/catalin…"   6 minutes ago       Up 6 minutes        0.0.0.0:8081->8080/tcp   awesome_bose
➜  ~ docker commit 6dbbd260e192 objcat/tomcat:v6
sha256:2da722c1a3dcdb88c07b63964661287d006cb768c93ee1849fc8c8dd1ee874ba

然后重新运行容器即可

docker run -it -p 8081:8080 objcat/tomcat:v6
方法2:

方法2是直接挂载配置文件, 首先我们要找到两个配置文件的路径

/tomcat/conf/tomcat-users.xml
/tomcat/webapps/manager/META-INF/context.xml

然后我们要先把它复制到我们的电脑, 所以要启动docker

docker run -itd -p 8081:8080 objcat/tomcat8

然后复制文件, 到这里复制到桌面 3cbb1c5e986a是容器的id

➜  ~ docker cp 3cbb1c5e986a:/tomcat/conf/tomcat-users.xml /Users/objcat/Desktop/tomcat-users.xml 
➜  ~ docker cp 3cbb1c5e986a:/tomcat/webapps/manager/META-INF/context.xml /Users/objcat/Desktop/context.xml

之后我们就着手修改一下, 跟上面的修改方式一样

tomcat-users.xml

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

context.xml 注释掉中间

修改之后我们就重新启动tomcat并挂载这两个文件到上面去

docker run -idt -p 8081:8080 -v /Users/objcat/Desktop/tomcat-users.xml:/tomcat/conf/tomcat-users.xml -v /Users/objcat/Desktop/context.xml:/tomcat/webapps/manager/META-INF/context.xml objcat/tomcat8

然后我们启动tomcat浏览一下

可以正常访问了!

finally enjoy it.

by objcat 2019.1.28

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容