【Docker】自定义Dockerfile构建镜像实例
制作自己的tomcat镜像
创建tomcat物理机工作路径/lyuse/mydocker/tomcat,并进入该目录
[root@centos ~]# mkdir -p /lyuse/mydocker/tomcat
[root@centos ~]# cd /lyuse/mydocker/tomcat
在该目录下创建a.txt
[root@centos tomcat]# touch a.txt
将tomcat和jdk的安装包下载到上述目录
上述目录下创建dockerfile文件,dockerfile文件内容如下:
#以centos:7作为父镜像开始构建
FROM centos:7
#将宿主机构建上下文的a.txt文档复制到容器的/usr/local/目录下并改名为container.txt
COPY a.txt /usr/local/container.txt
#将apache和jdk的压缩包添加到容器的/usr/local目录下,添加过程中解压
ADD apache-tomcat-10.0.18.tar.gz /usr/local
ADD jdk-18_linux-x64_bin.tar.gz /usr/local
#运行yum命令安装vim
RUN yum install -y vim
#设置环境变量,将MY_PATH设置为/usr/local
ENV MY_PATH=/usr/local
#设置工作目录
WORKDIR $MY_PATH
#设置jdk和tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk-18
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-10.0.18
ENV CATALINA_BASE /usr/local/apache-tomcat-10.0.18
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#声明容器运行的监听端口为8080
EXPOSE 8080
#启动时运行tomcat
#ENTRYPOINT ["/usr/local/apache-tomcat-10.0.18/bin/startup.sh"]
#CMD ["/usr/local/apache-tomcat-10.0.18/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-10.0.18/bin/startup.sh && tail -F /usr/local/apache-tomcat-10.0.18/logs/catalina.out
将该dockerfile构建成镜像mytomcat:1.1
[ ]
运行容器
docker run -d -p 8888:8080 --name mytomcat -v /lyuse/mydocker/tomcat/test:/usr/local/apache-tomcat-10.0.18/webapps/test -v /lyuse/mydocker/tomcat/tomcatlogs:/usr/local/apache-tomcat-10.0.18/logs --privileged=true mytomcat:1.1
查看容器已经处于运行状态
[ ]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4aacb63cb82d mytomcat:1.1 "/bin/sh -c '/usr/lo…" 5 seconds ago Up 4 seconds 0.0.0.0:8888->8080/tcp mytomcat
浏览器验证
查看jdk版本
[ ]
java version "18" 2022-03-22
Java(TM) SE Runtime Environment (build 18+36-2087)
Java HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)
tomcat运行一个简单的页面
在test目录下创建WEB-INFO目录和a.jsp文件,WEB-INFO目录下创建web.xml文件
web.xml的内容如下:
<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_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>test</display-name>
</web-app>
a.jsp的内容如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>test page</title>
</head>
<body>
---------------welcome to test page--------------<br/>
<%="run in docker tomcat"%>
<br>
<br>
<% System.out.println("------docker tomcat-------");%>
</body>
</html>
查看容器test目录下是否有相应目录和文件
[root@centos test]# docker exec 4aacb63cb82d ls -l /usr/local/apache-tomcat-10.0.18/webapps/test
重启mytomcat容器
[root@centos test]# docker restart 4aacb63cb82d
网页端刷新访问a.jsp页面
刷新几次页面后查看后台输出结果