dockerfile练习手工构建tomcat
准备工作
- 下载两个工具
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目录就可以直接找到并且使用,这里是优先查找当前目录,然后依次递归查询子目录
镜像构建完成后的是这样的:

- 启动镜像
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

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

通过浏览器访问测试

-
发布项目
- 在宿主机挂载的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> - 在宿主机挂载的test目录下创建一个WEB-INF目录
-
目录结构

-
效果图
浏览器效果图:

日志打印
cat catalina.out

-
发布打包好的镜像
-
准备好一个可以登录dockerhub的账号
-
使用命令登录dockerhub
docker login -u 你的用户名
-
登录完成后使用push命令发布
docker push 镜像名字:镜像版本

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

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

如果需要正常提交,可以把这个需要提交的镜像改一下名字:docker tag 镜像id 用户名/镜像名:版本号 docker tag b8fd9a375e00 ymwh/tomcat:1.0创建出来后,如同下图

-

浙公网安备 33010602011771号