使用Docker部署Tomcat

这篇具有很好参考价值的文章主要介绍了使用Docker部署Tomcat。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 使用Docker部署Tomcat
    • 1. 获取镜像
    • 2. 第一次启动tomcat
    • 3.带参数启动
    • 4.查看tomcat日志
    • 5.时区问题

使用Docker部署Tomcat

1. 获取镜像

docker pull tomcat:8.5.38

docker images

2. 第一次启动tomcat

该步骤作用:是为了拷贝容器中Tomcat中的conf下配置文件和webapps下的管理页面,用于后面自定义Tomcat服务器配置或者部署应用。

第一次启动:

docker run -d --name tomcat8 -p 8081:8080 tomcat:8.5.38

在宿主机创建文件夹:

mkdir -p /home/tomcat8

从容器中拷贝配置文件和应用到宿主机中:

docker cp tomcat8:/usr/local/tomcat/conf/ /home/tomcat8/
docker cp tomcat8:/usr/local/tomcat/webapps/ /home/tomcat8/

3.带参数启动

此时,如果直接带参数启动时,会报有重名的tomcat8容器冲突,报以下类似错误:

Error response from daemon: Conflict. The container name "/tomcat8" is already in use by container "f087d304d5bffa1becc20b9c3668d634caf7bc001fc7ce89bdf5c5b43e3e869e". You have to remove (or rename) that container to be able to reuse that name.

这时候,需要先将容器tomcat8先停止,再删除:

docker stop tomcat8
docker remove tomcat8

最后再使用带参数的命令启动:

docker run --name tomcat8 -p 1808:8080  \
-v /home/tomcat8/conf:/usr/local/tomcat/conf \
-v /home/tomcat8/webapps:/usr/local/tomcat/webapps \
-v /home/tomcat8/logs:/usr/local/tomcat/logs \
-v /etc/localtime:/etc/localtime:ro \
-v /serverdata/conf/tsmsg/:/serverdata/conf/tsmsg \
-e TZ=Asia/Shanghai \
-d tomcat:8.5.38
-v /serverdata/conf/tsmsg/:/serverdata/conf/tsmsg 

这个为应用本身的配置文件映射,根据实际需求来设置配置文件地址。

-v /etc/localtime:/etc/localtime:ro 

这个命令的作用是将宿主机上的时区设置文件(/etc/localtime)挂载到Docker容器中相同的位置,使容器能够使用与宿主机相同的时区设置。

具体来说,这个命令的各部分意义如下:

  • -v:这是Docker命令用来指定挂载卷的标志(Volume)。
  • /etc/localtime:这是宿主机上时区文件的路径。该文件包含了当前时区的信息。
  • :/etc/localtime:这是容器内部的挂载点,即容器内与宿主机/etc/localtime文件对应的路径。
  • :ro:这表示以只读方式挂载(Read-Only)。容器可以读取该文件,但无法修改它,这样可以防止容器的操作影响宿主机的时区设置。

这样做的好处是保证容器内的应用程序可以正确处理与时区相关的操作,例如记录日志的时间戳、执行定时任务等。这对于需要时区一致性的应用程序来说非常重要。例如,如果你在上海运行宿主机,而你的容器也应当使用东京的时区,通过这种方式挂载/etc/localtime,你的容器将会自动采用上海的时区,而无需在容器内单独配置时区。

4.查看tomcat日志

  • 通过看宿主机 /home/tomcat8/logs 下的日志

  • 通过docker logs -f tomcat8 查看日志

5.时区问题

如果你的应用用的是Oracle数据,可能会遇到这样的错:

Caused by: java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-01882: timezone region not found

这个错误信息是由Oracle数据库返回的,表示有两个错误:

  1. ORA-00604: 这个错误表明在递归SQL级别(即Oracle内部操作)发生了错误。递归SQL是Oracle在处理用户SQL语句时内部自动执行的SQL语句,常见于触发器、登录逻辑等。
  2. ORA-01882: 这个错误表明找不到指定的时区地区。当数据库或JDBC驱动试图访问特定的时区信息,而该信息在数据库的时区文件中不存在或未被识别时,就会出现这个错误。

这两个错误一起出现可能意味着在执行初始化会话时,比如在用户登录时设置会话的时间区域,Oracle发现它不能识别或找到该时区。

这时候你会搜索到要同步时区,需先设置好宿主机的时区:

timedatectl set-timezone Asia/Shanghai

再在容器启动时添加

-v /etc/localtime:/etc/localtime:ro 

或许,会发现宿主机的时间不对,可用

date -s "20240131 11:31:00"

更改一下宿主机的时间文章来源地址https://www.toymoban.com/news/detail-825057.html

到了这里,关于使用Docker部署Tomcat的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用docker安装的tomcat部署activiti-app.war、activiti-admin.war失败(ClassNotFoundException)

    一直以来习惯用docker配置一些本地学习环境,许多教程配置activiti的方式都是通过复制activiti的war包部署在tomcat中,我尝试了一下通过docker的方式遇到了一些不易察觉的错误。 使用docker安装tomcat9.0 docker run -d -p 8080:8080 --name tomcat tomcat:9.0 复制activiti的war包 浏览器访问404 使用d

    2024年02月16日
    浏览(31)
  • 使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

    image 镜像名称,可去镜像市场查找自己需要的 hostname 容器内服务名 container_name 容器名 volumes 可以把自己电脑的路径映射到容器中的文件夹中 networks 写同一个网络可以让容器之间进行通信 启动 在项目根目录的命令行中输入 docker-compose up 停止 在项目根目录的命令行中输入 d

    2024年02月12日
    浏览(52)
  • 华为云云耀云服务器L实例评测|使用华为云耀云服务器L实例的CentOS部署Docker并运行Tomcat应用

    目录 前言 步骤1:登录到华为云耀云服务器L实例 步骤2:安装Docker 并验证Docker安装 步骤3:拉取Tomcat镜像并运行Tomcat容器 步骤4:放行8080端口 步骤5:访问tomcat 步骤6:管理Tomcat容器 小结 在云计算领域,Docker已经成为了最流行的容器化平台之一。它能够帮助您更加高效地部署

    2024年02月07日
    浏览(63)
  • Docker 安装与Tomcat部署

    虚拟机:VMware Linux环境:CentOS 7 镜像(images): 容器(contenor): 1.Linux配置固定IP Linux虚拟机配置静态IP 1.查看Linux的IP地址 2.配置远程连接 3.连接成功 1.切换成root用户并输入超级管理员密码: 2.使用阿里云资源安装Docker: 3.设置Docker开机自启动: 4.配置镜像源: 可快速、高效地拉取

    2023年04月21日
    浏览(33)
  • docker - compose 部署 Tomcat

    目录 下面用 docker-compose 方法部署 Tomcat 1、准备工作 2、部署容器 启动容器 查看新启动的容器 3、总结 下面用 docker-compose 方法部署 Tomcat 1、准备工作 先在主机创建工作文件夹,为了放置 Tomcat 的配置文件等。创建文件夹的方法,自己搞定。 先随便启动一个 tomcat 容器(用第一

    2024年01月24日
    浏览(37)
  • Docker应用部署之Tomcat

    部署Tomcat 要求:在docker中部署tomcat,并通过外部机器访问tomcat部署的项目 步骤: 1.搜索tomcat镜像 docker search tomcat 2.拉取tomcat镜像 docker pull tomcat 3.创建容器,设置端口映射、目录映射 mkdir ~/tomcat cd ~/tomcat docker run -id --name=c_tomcat -p 8080:8080   将宿主机的8080映射到容器的8080端

    2024年02月07日
    浏览(37)
  • 【Docker】部署mysql 和 tomcat

    目录 部署MySQL 1.搜索镜像 2. 拉取镜像 部署Tomcat 1. 搜索镜像 2.拉取镜像  3.查看镜像 docker search mysql   通过mysql 镜像创建对应的容器,并设置端口映射,目录映射 创建mysql 的目录 docker run -id                               创建一个新的容器,同时运行这个容器 -p 3306:3306

    2024年02月01日
    浏览(39)
  • Docker Compose部署tomcat服务

    当使用Docker Compose部署Tomcat和WAR包时,以下是一个示例,包括相应的docker-compose.yml文件和一些注释。 首先,假设您有一个名为webapp.war的WAR包,用于部署到Tomcat容器中。 在与WAR包和docker-compose.yml文件相同的目录下,创建一个名为docker-compose.yml的文件,并添加以下内容: 上述示

    2024年02月13日
    浏览(31)
  • docker应用部署(部署MySql,部署Tomcat,部署Nginx,部署Redis)

    一、部署MySQL 搜索mysql镜像 拉取mysql镜像 创建容器,设置端口映射、目录映射 参数说明: -p 3307:3306 :将容器的 3306 端口映射到宿主机的 3307 端口。 -v $PWD/conf:/etc/mysql/conf.d :将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录 -v $PWD/logs:/logs :将主机当前目

    2024年02月03日
    浏览(43)
  • Docker 部署 Tomcat 并开放 8082 端口

    可以通过下面的命令来验证是否安装了 Docker: 可以看到,输入该命令后显示了 Docker 版本信息,说明已经安装了 Docker。 可以通过下面的命令从 Docker Hub 上拉取 Tomcat 镜像: 这将下载最新版本的 Tomcat 镜像到虚拟机中。 使用以下命令在 Docker 中运行 Tomcat 容器,同时将主机的

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包