dockerfile练习手工构建tomcat

准备工作

  1. 下载两个工具
    tomcat下载:http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.22/bin/
    jdk下载:https://pan.baidu.com/s/1zphZjJwkEbr2ppg8DiUUGA 提取码:tjt4

把上面下载好的两个工具放在期望的目录下,我放在的目录是/home/mydockerfile/mytomcatimages
2. 构建Dockerfile
在上面两个文件的同级目录下,创建一个Dockerfile文件,并在其中写入以下代码

FROM centos:7
MAINTAINER moon<yueYing_web@163.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u11-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.22.tar.gz /usr/local

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH #JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINE_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out


一般情况下,一个项目中应该有readme文件存在,我这里创建了一个readme.txt文件。然后创建一个build目录代待会儿用来存储挂载目录。最终的目录结构如下:

3. 构建镜像

docker build -t diytomcat .

因为我创建的是官方指定的dockerfile文件命名,所以不需要使用-f dockerfile目录就可以直接找到并且使用,这里是优先查找当前目录,然后依次递归查询子目录
镜像构建完成后的是这样的:

  1. 启动镜像
docker run -d -p 9090:8080 --name mytomcat01 -v /home/mydockerfile/mytomcatimages/build/test/:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/mydockerfile/mytomcatimages/build/logs/:/usr/local/apache-tomcat-9.0.22/logs diytomcat

  1. 测试当前服务是否启动
    在宿主机使用命令行测试
    curl localhost:9090

    通过浏览器访问测试

  2. 发布项目

    • 在宿主机挂载的test目录下创建一个WEB-INF目录
      mkdir WEB-INF
    • 进入WEB-INF目录,然后创建一个web.xml文件,在其中写入下面这些代码
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
             version="2.5">
    </web-app>
    
    • 然后退出WEB-INF目录,创建一个index.jsp(index.html),这里我创建的是index.jsp,内容如下
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>hello, moon</title>
    </head>
    <body>
    Hello World!<br/>
    <%
    System.out.println("----my test web logs----");
    %>
    </body>
    </html>
    
  3. 目录结构

  4. 效果图
    浏览器效果图:

日志打印
cat catalina.out

  1. 发布打包好的镜像

    • 准备好一个可以登录dockerhub的账号

    • 使用命令登录dockerhub

      docker login -u 你的用户名
      

    • 登录完成后使用push命令发布

    docker push 镜像名字:镜像版本
    



    提交完成后,在浏览器中展示的结果如下

    push的时候有一个坑需要注意,我们自己最开始生成的镜像,在提交镜像到dockerhub上的时候,需要有人员信息和版本信息,否在会被服务器拒绝,如下:

    如果需要正常提交,可以把这个需要提交的镜像改一下名字:

    docker tag 镜像id 用户名/镜像名:版本号
    
    docker tag b8fd9a375e00 ymwh/tomcat:1.0
    

    创建出来后,如同下图

posted @ 2022-02-14 23:58  影梦无痕  阅读(83)  评论(0)    收藏  举报