windows下docker部署tomcat项目并对外访问

本文介绍了如何使用Dockerfile构建一个包含Tomcat和JDK的镜像,详细步骤包括编写Dockerfile、构建镜像、运行容器并部署HelloDocker页面。通过挂载数据卷,实现在Windows主机与容器间同步文件,并通过配置nginx实现对外访问。
摘要由CSDN通过智能技术生成

编写Dockerfile

#基础环境
FROM centos
#作者
MAINTAINER isczy
#拷贝当前文件夹下的readme.txt文件到容器内的/usr/local/下(这步没用,练习COPY指令)
COPY readme.txt /usr/local/readme.txt
#ADD 和COPY相似,但可以自动解压
ADD jdk-8u281-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.43.tar.gz /usr/local/
#镜像构建时安装插件
RUN yum -y install vim
RUN yum -y install net-tools 

#配置变量 键值对形式 MYPATH /usr/local
ENV MYPATH /usr/local
#指定工作目录,也就是进到容器时的当前目录
WORKDIR $MYPATH

#配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_281
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.43
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.43
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASE/lib

#暴露端口
EXPOSE 8080
CMD echo "---success---"
CMD /usr/local/apache-tomcat-9.0.43/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.43/bin/logs/catalina.out

运行Dockerfile构建镜像

进入Dockerfile的目录,在此处cmd打开窗口
在这里插入图片描述

执行命令:docker build -t mytomcat:9.0 -f Dockerfile-tomcat-jdk .
-t 后跟别名:版本号(自定义)
-f 指定路径,此处为当前目录下的Dockerfile-tomcat-jdk文件
注意最后不要忘记有个 空格和点

在这里插入图片描述
构建完成会打印如下图所示
在这里插入图片描述

进入docker运行镜像

1.docker images 查看构建的镜像
在这里插入图片描述
2.docker run 运行

执行命令:
docker run -d --name mytomcat01 -p 8080:8080 -v //d/docker/tomcat/webapps:/usr/local/apache-tomcat-9.0.43/webapps mytomcat:9.0
-d 后台运行
–name 起别名
-p 8080:8080 对外暴露8080端口映射到容器内的8080端口
-v 挂载卷(不知道的可以了解下上一篇博客:windows下docker容器挂载数据卷

3.运行成功后docker ps查看当前运行的容器
在这里插入图片描述
此时宿主机也就是我们的windows中D:\docker\tomcat\webapps已经和容器内的/usr/local/apache-tomcat-9.0.43/webapps目录实现同步挂载

简单部署个hello docker页面

回到windows中D:\docker\tomcat\webapps目录下,新建文件夹test,进入test下新建一个WEB-INF目录和一个index.html
在这里插入图片描述
index内容

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="utf-8"/>  
    <title>index</title> 
</head>
<body>  
   <h1>hello docker</h1>
</body>
</html>

进入WEB-INF目录新建web.xml文件,内容如下即可:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
          http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
          version="2.4">
    	
</web-app>

到此,简单的项目已经部署完成了,检验是否部署成功
回到docker查看虚拟机ip,执行命令:docker-machine ip default
在这里插入图片描述
浏览器输入http://192.168.99.100:8080/test访问,如下即部署成功
在这里插入图片描述
因为外部访问不到本机docker虚拟机的ip,那么如何对外访问呢?

项目对外访问

首先想到使用nginx转发请求,修改nginx的nginx.conf配置添加监听端口7777(自定义)即可

server {
        listen 7777;
        server_name  localhost;
        location / {
            proxy_pass http://192.168.99.100:8080;
        }	
    }

启动nginx访问本机IP地址:http://localhost:7777/test/
在这里插入图片描述
此时就实现了对外访问,同理部署正式服务器即可

Docker中挂载Tomcat部署项目后出现404错误可能归因于以下几个原因: 1. 项目路径配置错误:确保Tomcat容器中的项目挂载路径与Docker主机相符。你可以使用`docker-compose`或`docker run`命令中的`-v`选项来进行挂载。例如:`docker-compose.yml`文件中的挂载配置: ```yaml services: tomcat: image: tomcat:latest volumes: - /path/to/local/webapp:/usr/local/tomcat/webapps/ROOT ``` 确保`/path/to/local/webapp`是本地主机上项目的绝对路径。如果路径不正确,则可能导致Tomcat无法找到项目文件,从而出现404错误。 2. Tomcat配置错误:检查Tomcat的配置文件(例如`server.xml`)中是否正确配置了项目部署路径。确保项目的`<Context>`配置与挂载路径匹配。例如: ```xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/usr/local/tomcat/webapps/ROOT" reloadable="true"/> </Host> ``` 确保`docBase`路径与挂载路径相同。这将确保Tomcat能够正确访问项目文件。 3. 缺少项目文件:确保挂载路径中存在项目文件。如果项目文件缺失,Tomcat将无法找到文件而返回404错误。检查项目文件是否正确部署到了挂载路径下。 4. 项目文件权限问题:在挂载项目文件时,确保文件和文件夹的权限设置正确。确保Tomcat用户(通常是`tomcat`或`root`)具有访问挂载路径下项目文件的权限。你可以使用`chmod`命令来修改文件权限,例如:`chmod -R 755 /path/to/local/webapp`。 总结: 要解决Docker中挂载Tomcat部署项目访问404错误,确保挂载路径正确、Tomcat配置正确、项目文件存在以及文件权限设置正确。通过核对这些问题,你应该能够成功解决404错误并成功访问Tomcat部署项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值