利用Dockerfile构建与部署Java Tomcat镜像

需积分: 0 0 下载量 5 浏览量 更新于2024-08-03 收藏 5KB MD 举报
本篇文章主要介绍了如何使用Dockerfile来创建和部署Tomcat镜像,以便在Java环境中进行应用的容器化部署。以下是详细的知识点: 1. **Dockerfile基础概念**: Dockerfile是一个文本文件,包含一系列命令,用于告诉Docker如何从基础镜像(如CentOS)构建一个定制的镜像。在这个例子中,作者基于CentOS,并指定了维护者信息(MAINTAINER)以及将Apache Tomcat 9.0.37和OpenJDK 8.0.73添加到镜像中。 2. **Dockerfile内容解析**: - `FROM centos`: 声明基础镜像,这里使用的是CentOS。 - `COPY readme.txt /usr/local/readme.txt`: 复制本地的readme.txt文件到镜像的指定路径。 - `ADD jdk-8u73-linux-x64.tar.gz /usr/local/`: 添加Java JDK到镜像中,便于安装和配置。 - `ADD apache-tomcat-9.0.37.tar.gz /usr/local/`: 同样,添加Apache Tomcat到镜像。 - `RUN yum install vim`: 安装vim编辑器,方便后续操作。 - `WORKDIR $MYPATH`: 设置工作目录为自定义变量$MYPATH。 - `ENV`指令设置环境变量,如JAVA_HOME、CLASSPATH、CATALINA_HOME等,用于配置Tomcat的环境。 - `EXPOSE 8080`: 需要外部访问的端口,这里是Tomcat的默认HTTP端口。 - `CMD`部分启动Tomcat,先执行startup.sh脚本启动服务,然后通过`tail -F`监控日志。 3. **构建镜像过程**: 使用`docker build`命令构建自定义的Tomcat镜像,`-t`选项指定镜像名称(如`tdiytomcat`),`.`表示当前目录作为构建上下文。 4. **运行容器**: `docker run`命令用于运行已经构建好的镜像,`-p 3344:8080`将主机的3344端口映射到容器的8080端口,`-name`指定容器名称,`-v`参数用于将宿主机的目录挂载到容器中的路径,这样可以实现数据的持久化。 通过以上步骤,作者不仅演示了如何利用Dockerfile创建一个包含了Java环境和Tomcat的镜像,还展示了如何通过Docker容器化技术将Java应用部署在不同环境中,提高应用的可移植性和部署效率。这在DevOps和微服务架构中尤其重要,能有效减少部署复杂性,简化运维流程。

Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-06-09 19:57:51.583 INFO 1 --- [nio-9211-exec-3] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-06-09 19:57:51.604 INFO 1 --- [nio-9211-exec-3] o.s.web.servlet.DispatcherServlet : Completed initialization in 21 ms 2023-06-09 19:57:58.676 INFO 1 --- [nio-9211-exec-5] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the HTTP protocol [RTSP/1.00x0d0x0a0x0d...] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:560) ~[tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:260) ~[tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_312] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_312] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_312]

2023-06-11 上传