Docker(六):DockerFile案例4

自定义镜像 Tomcat 9

ADD 命令:

拷贝+解压缩,将宿主机目录下的文件拷贝进镜像,且ADD命令会自动处理URL和解压tar压缩包
CASE:下面的案例表示将原生的tomcat.tar.gz、jdk.tar.gz拷贝到镜像中并自动解压

COPY 命令:

类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中<源文件>的文件/目录复制到新的一层的镜像内的<目录路径>位置
CASE:下面的案例表示将宿主机上的 copy.txt 拷贝到镜像的某个路径下

首先下载apache-tomcat-9.0.12.tar.gzjdk-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 可进行测试


从Dockerfile到容器整个流程

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值