自定义镜像 Tomcat 9
ADD 命令:
拷贝+解压缩,将宿主机目录下的文件拷贝进镜像,且ADD命令会自动处理URL和解压tar压缩包
CASE:下面的案例表示将原生的tomcat.tar.gz、jdk.tar.gz拷贝到镜像中并自动解压
COPY 命令:
类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中<源文件>的文件/目录复制到新的一层的镜像内的<目录路径>位置
CASE:下面的案例表示将宿主机上的 copy.txt 拷贝到镜像的某个路径下
首先下载apache-tomcat-9.0.12.tar.gz、jdk-8u181-linux-x64.tar.gz 并上传到CentOS 7 上
[root@localhost /]# mkdir -p /zhaoyoung/mydockerfile/tomcat9
[root@localhost /]# cd /zhaoyoung/mydockerfile/tomcat9/
[root@localhost tomcat9]# pwd
/zhaoyoung/mydockerfile/tomcat9
创建copy.txt、拷贝tomcat、jdk
[root@localhost tomcat9]# touch c.txt
[root@localhost tomcat9]# cp /usr/local/install_package/apache-tomcat-9.0.12.tar.gz /zhaoyoung/mydockerfile/tomcat9/
[root@localhost tomcat9]# cp /usr/local/install_package/jdk-8u181-linux-x64.tar.gz /zhaoyoung/mydockerfile/tomcat9/
[root@localhost tomcat9]# ll
总用量 190980
-rw-r--r--. 1 root root 9912675 10月 13 16:07 apache-tomcat-9.0.12.tar.gz
-rw-r--r--. 1 root root 0 10月 13 16:01 copy.txt
-rw-r--r--. 1 root root 185646832 10月 13 16:08 jdk-8u181-linux-x64.tar.gz
DockerFile
[root@localhost tomcat9]# vim Dockerfile
[root@localhost tomcat9]# cat Dockerfile
FROM centos
MAINTAINER zhaoyoung<zhaoyoung_java@163.com>
# 把宿主机当前上下文的copy.txt拷贝到镜像 /usr/local/ 路径下
COPY copy.txt /usr/local/copyincontainer.txt
# 把jdk和tomcat添加到镜像中
ADD jdk-8u181-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.12.tar.gz /usr/local/
# 安装vim
RUN yum -y install vim
# 设置工作访问时的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置jdk、tomcat 环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.12
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.12
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 容器运行时监听的端口
EXPOSE 8080
# # 启动时运行tomcat
# # ENTRYPOINT ["/usr/local/tomcat/bin/startup.sh" ]
# CMD ["/usr/local/tomcat/bin/catalina.sh","run" ]
CMD /usr/local/apache-tomcat-9.0.12/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.12/bin/logs/catalina.out
[root@localhost tomcat9]# ll
总用量 190984
-rw-r--r--. 1 root root 9912675 10月 13 16:07 apache-tomcat-9.0.12.tar.gz
-rw-r--r--. 1 root root 0 10月 13 16:01 copy.txt
-rw-r--r--. 1 root root 1063 10月 13 16:59 Dockerfile
-rw-r--r--. 1 root root 185646832 10月 13 16:08 jdk-8u181-linux-x64.tar.gz
创建镜像
[root@localhost tomcat9]# docker build -t zhaoyoungtomcat9 .
Sending build context to Docker daemon 195.6MB
Step 1/15 : FROM centos
---> 75835a67d134
Step 2/15 : MAINTAINER zhaoyoung<zhaoyoung_java@163.com>
---> Using cache
---> 8c804ea7a39a
Step 3/15 : COPY copy.txt /usr/local/copyincontainer.txt
---> c0ac83488e9e
Step 4/15 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/
---> 3dee56e5bc55
Step 5/15 : ADD apache-tomcat-9.0.12.tar.gz /usr/local/
---> 2671a375bcee
Step 6/15 : RUN yum -y install vim
---> Running in f9925762cc31
……中间省略安装过程
Complete!
Removing intermediate container f9925762cc31
---> 29bef24da518
Step 7/15 : ENV MYPATH /usr/local
---> Running in 33d1ab051e7b
Removing intermediate container 33d1ab051e7b
---> b6cfd0f93042
Step 8/15 : WORKDIR $MYPATH
---> Running in f5b76e7b7e9d
Removing intermediate container f5b76e7b7e9d
---> e93570720de0
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_181
---> Running in e412539d5a5d
Removing intermediate container e412539d5a5d
---> c180790b4de1
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---> Running in ddef63f5e7f9
Removing intermediate container ddef63f5e7f9
---> b07a11f2e7e2
Step 11/15 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.12
---> Running in 2527305c01ef
Removing intermediate container 2527305c01ef
---> e54dc792949b
Step 12/15 : ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.12
---> Running in 1bdfdcf4dc68
Removing intermediate container 1bdfdcf4dc68
---> 2eac6fe5caf2
Step 13/15 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
---> Running in 703793cdbcab
Removing intermediate container 703793cdbcab
---> 7beb48aff33d
Step 14/15 : EXPOSE 8080
---> Running in 901fb8f836ef
Removing intermediate container 901fb8f836ef
---> 1dce9cecdf53
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.12/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.12/logs/catalina.out
---> Running in be7adc8e44ba
Removing intermediate container be7adc8e44ba
---> 124517434916
Successfully built 124517434916
Successfully tagged zhaoyoungtomcat9:latest
创建成功
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zhaoyoungtomcat9 latest 6b17dc9c226c 40 seconds ago 751MB
myip_son latest 6c9507aea358 46 hours ago 398MB
myip_father latest 2c22e721607a 46 hours ago 299MB
myip2 latest dcbb4656e640 47 hours ago 299MB
myip latest 9e3c14f76b1d 47 hours ago 299MB
mycentos 1.0 c2d4f6acb9af 2 days ago 455MB
zhaoyoung/nodocstomcat 1.0 84498728984a 4 days ago 463MB
centos latest 75835a67d134 5 days ago 200MB
tomcat latest 41a54fe1f79d 4 weeks ago 463MB
hello-world latest 4ab4c602aa5e 5 weeks ago 1.84kB
运行容器
[root@localhost ~]# docker run -d -p 9080:8080 --name myt9 -v /zhaoyoung/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.12/webapps/test -v /zhaoyoung/mydockerfile/tomcat9/tomcat9logs:/usr/local/apache-tomcat-9.0.12/logs --privileged=true zhaoyoungtomcat9
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d667c727b320 zhaoyoungtomcat9 "/bin/sh -c '/usr/lo…" 29 seconds ago Up 28 seconds 0.0.0.0:9080->8080/tcp myt9
[root@localhost ~]# docker exec d667c727b320 ls -l
total 0
drwxr-xr-x. 1 root root 42 Oct 15 06:21 apache-tomcat-9.0.12
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
-rw-r--r--. 1 root root 0 Oct 13 08:01 copyincontainer.txt
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x. 7 10 143 245 Jul 7 08:09 jdk1.8.0_181
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 Oct 6 19:14 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src
drwxr-xr-x. 4 root root 33 Oct 15 06:23 tomcat
访问 http://192.168.1.106:9080/ 即可成功
在宿主机下创建html文件
[root@localhost tomcat9]# ls
apache-tomcat-9.0.12.tar.gz copy.txt Dockerfile jdk-8u181-linux-x64.tar.gz test tomcat9logs
[root@localhost tomcat9]# cd test/
[root@localhost test]# vim idCard.html
[root@localhost test]# cat idCard.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!-- <input type="text" id="idCard"> -->
<input type="text" name="" id="phone" onblur="phone2(this.value)">
</body>
<script>
function phone2(phone){
if(!(/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(phone))){
console.log(phone+"手机号码有误,请重填");
alert(phone+"手机号码有误,请重填");
return false;
}
}
</script>
</html>
因为数据卷的共享性,在宿主机有关联的文件下进行增删改,相应的容器内会同步过去,也就是说以后部署项目可以直接在宿主机上发布即可
访问 http://192.168.1.106:9080/test/idCard.html 可进行测试