【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.txtCOPY a.txt /usr/local/container.txt#将apache和jdk的压缩包添加到容器的/usr/local目录下,添加过程中解压ADD apache-tomcat-10.0.18.tar.gz /usr/localADD jdk-18_linux-x64_bin.tar.gz /usr/local#运行yum命令安装vimRUN yum install -y vim#设置环境变量,将MY_PATH设置为/usr/localENV MY_PATH=/usr/local#设置工作目录WORKDIR $MY_PATH#设置jdk和tomcat的环境变量ENV JAVA_HOME /usr/local/jdk-18ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-10.0.18ENV CATALINA_BASE /usr/local/apache-tomcat-10.0.18ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin#声明容器运行的监听端口为8080EXPOSE 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 NAMES4aacb63cb82d 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-22Java(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页面
刷新几次页面后查看后台输出结果
