• Dockerfile创建tomcat和jdk,并发布java项目


    1.准备好需要的jdk 和 tomcat

    kun@ubuntu:~$ cd tomcat-docker/
    kun@ubuntu:~/tomcat-docker$ ll
    total 245232
    drwxrwxr-x 4 kun kun      4096 May  6 11:34 ./
    drwx------ 4 kun kun      4096 May  6 11:30 ../
    -rw-rw-r-- 1 kun kun  14315520 May  5 18:03 apache-tomcat-8.5.34.tar
    -rw-rw-r-- 1 kun kun       422 May  6 11:30 Dockerfile
    -rw-rw-r-- 1 kun kun  44921007 May  6 15:37 forms.war
    drwxr-xr-x 7 kun kun      4096 Dec 16 03:48 jdk/
    -rw-rw-r-- 1 kun kun 191817140 May  5 18:03 jdk-8u201-linux-x64.tar.gz
    drwxrwxr-x 9 kun kun      4096 May  5 18:12 tomcat/

    这里我将jdk和tomcat的tar.gz 包都通过 tar -zxvf解压了 并通过mv 修改了文件夹名字为jdk和tomcat

    (其实不解压也可以,2中说明为啥我要解压,为啥不用解压而我又先解压了)

    2.编写Dockerfile(示例如下)

    FROM ubuntu:16.04
    MAINTAINER ceshi@qq.com
    COPY ./jdk /usr/local/jdk
    COPY ./tomcat /tomcat
    
    ENV JAVA_HOME /usr/local/jdk
    ENV JRE_HOME $JAVA_HOME/jre
    ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib
    ENV PATH $PATH:$JAVA_HOME/bin
    ENV CATALINA_OPTS -Xms128m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=512M
    RUN cd /tomcat/logs && echo "1" >>count.txt
    ENTRYPOINT /tomcat/bin/startup.sh && tail -F /tomcat/logs/catalina.out

    根据显示的行号来解释

      1.我们制作镜像的基础,在ubuntu16.04的系统上构建后续操作

       2.维护者信息

      3~5.复制当前目录下的jdk目录 到容器内部的/usr/local/jdk目录下 

        解释下:

        Dockerfile提供了COPY 和 ADD 两种方式

        COPY : COPY ./jdk  /usr/local/jdk            #直接原样拷贝过去

        ADD   : ADD ./jdk-8u201-linux-x64.tar.gz  /usr/local/java        #拷贝过去,如果是压缩包还会自动帮着解压,本来是好事,但是解压后文件夹名字一长串,不便于记忆,就直接先解压好重命名好了再COPY过去

          7~13.一看就知道了 通过 ENV 来设置各种环境变量

          14.为了示例RUN的使用, 通过RUN命令,后面就可以执行各种linux命令

          15.表示启动容器后执行的操作

    将上述文件保存为Dockerfile  注意大小写,没有后缀,然后进入到该目录,执行命令构建镜像

    sudo docker build -t xwg/tomcat:v1 --rm=true .
    #如果改变了Dockerfile名字,则需要指定 -f 文件名称
    xwg/tomcat:v1 镜像的名字及tag,  最后的点代表当前目录

    启动试试看

    sudo docker run -p 8899:8080 --name tomcat_xwg xwg/tomcat:v1        





    然后问题又来了,容器倒是启动起来了,但是怎么把我们自己的war包丢里面运行起来呢?

    sudo docker cp forms.war tomcat_xwg:/usr/local/tomcat/webapps

      forms.war  不解释

      tomcat_xwg:/usr/local/tomcat/webapps  冒号前面为容器名称或者id, 冒号后面为tomcat的webapps全路径

      丢进去就好了,会自动发布的,不需要我们再自己去启动tomcat了,因为容器启动后tomcat就默认启动了  Dockerfile最后一行就是启动tomcat

      丢进去后,控制台就会检测到,并自动部署

    查看docker中tomcat日志

    使用docker exec进入Docker容器
      除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:
    1. $ sudo docker exec --help   
     
     
    接下来我们使用该命令进入一个已经在运行的容器
      1. $ sudo docker ps  
      2. $ sudo docker exec -it 775c7c9ee1e1 /bin/bash  
  • 相关阅读:
    Flink批处理读取Hive写入MySql
    数组与链表的优缺点
    Flink任务暂停重启
    Flink优化总结
    Flink集群监控
    flink连接器-流处理-读写redis
    Flink连接器-批处理-读写Hbase
    flink on yarn
    java的常量定界符
    特殊注释的使用
  • 原文地址:https://www.cnblogs.com/xwgcxk/p/10820501.html
Copyright © 2020-2023  润新知