# 9 常用容器部署-Tomcat

下面介绍一下常用容器的部署。可以先简单了解下,用到再来详细查看。

在 Docker 中部署 Tomcat 容器。

# 9.1 搜索镜像

首先搜索镜像,命令:

docker search tomcat
1

找到官方镜像:

# 9.2 拉取镜像

找到官方镜像,执行拉取,命令:

docker pull tomcat
1

# 9.3 启动容器

镜像下载完成就,就可以启动容器了。使用后台模式启动容器,并映射 8080 端口,并进行相应的容器卷挂载。

命令:

docker run -d -p 8080:8080 --name tomcat \
-v /home/doubi/tomcat/webapps:/usr/local/tomcat/webapps \
-v /home/doubi/tomcat/logs:/usr/local/tomcat/logs tomcat
1
2
3

解释一下:

  • -d:后台运行;
  • -p 8080:8080:端口映射,宿主机的8080端口映射到容器的8080端口;
  • --name tomcat:给容器起个名字,自己随便起,这里叫tomcat;
  • -v /home/doubi/tomcat/webapps:/usr/local/tomcat/webapps:将宿主机的 /home/doubi/tomcat/webapps 目录与容器的 /usr/local/tomcat/webapps 目录进行映射,项目在这个目录下,这样将项目放到宿主机的目录下就可以了;
  • -v /home/doubi/tomcat/logs:/usr/local/tomcat/logs:将宿主机的 /home/doubi/tomcat/logs 与容器的 /usr/local/tomcat/logs 目录进行映射,日志在这个目录下,这样在宿主机就可以查看到 tomcat 的日志了;
  • tomcat:使用的镜像的名称。

# 9.4 存在的坑

容器启动后,访问宿主机的 8080 端口,会报 404 错误。


为什么呢?

tomcat 访问到的8080带三脚猫的首页,是在 webapps 目录下的,但是新版的 tomcat 的 webapps 下面是空,静态资源被放置到 webapps.dist 目录下了,所以就找不到首页了。

怎么处理呢?

我们可以进入到容器,将webapps.dist 目录下的内容拷贝到 webapps 目录下面。

# 进入容器
docker exit -it tomcat容器ID /bin/bash

# 进入到webapps.dist/目录
cd webapps.dist/

# 将webapps.dist/目录下的内容拷贝到webapps/目录下
cp -r * ../webapps/
1
2
3
4
5
6
7
8


拷贝完成后,重新刷新页面,出现了三脚猫。

大功告成!

# 9.5 同步容器内时间

如果容器内的时间不对,一般是时区不对导致的,设置时区即可。

首先进入到容器内。

然后查看一下时间:

date
1

如果时间不正确,则需要调整时区。


运行如下命令,来选择时区:

tzselect
1

会显示选择时区的选项,选择亚洲、中国、北京,最后确定。

然后再运行如下命令:

cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
1

此时再运行一下 date 命令查看一下时间是否正确。


如果容器内部的时间是正确的,而 tomcat 打印的日志时间不正确,则需要修改 tomcat 的配置。

首先进入容器,然后进入文件夹 /usr/local/tomcat/bin 部,编辑文件 catalina.sh,在配置文件前面添加如下配置:

CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=Asia/Shanghai"
1