CentOS7下Docker中构建可以自动发布到项目的Tomcat容器

步骤

  • 下载镜像
    • 搜索相应的镜像文件:docker search 'tomcat' 如下

  

    • 下载镜像:docker pull tomcat:7,如下图

      PS:后面的数字代表tomcat的版本,可以自己选择。如:tomcat:7;tomcat:8;tomcat:9
    • 查看已经下载的tomcat镜像:docker images | grep "tomcat" 

  • 制作新镜像
    • 原因:项目进行远程自动发布需要修改tomcat的配置文件,文件修改后一定要重新构建一个新的镜像,通过这个镜像创建容器运行。
      • 修改方法
      • 方法一:通过镜像创造出tomcat容器,修改容器中文件,然后通过容器重新构建一个新的tomcat镜像,最后通过这个新镜像运行容器。自己亲测:通过此步骤创建容器后,修改的文件不生效!!!以后会找原因。。。。
      • 方法二:通过Dockerfile创造镜像,步骤如下
        • 创建一个目录用来存放所需文件
          • 创建目录:mkdir   /home/jingguoliang/docker/tomcat_dockerfile(路径为栗子)
          • 进入此目录:cd /home/jingguoliang/docker/tomcat_dockerfile
        • 创建context.xml:touch context.xml
        • 编写context.xml
          <?xml version='1.0' encoding='utf-8'?>
          <!--
            Licensed to the Apache Software Foundation (ASF) under one or more
            contributor license agreements.  See the NOTICE file distributed with
            this work for additional information regarding copyright ownership.
            The ASF licenses this file to You under the Apache License, Version 2.0
            (the "License"); you may not use this file except in compliance with
            the License.  You may obtain a copy of the License at
          
                http://www.apache.org/licenses/LICENSE-2.0
          
            Unless required by applicable law or agreed to in writing, software
            distributed under the License is distributed on an "AS IS" BASIS,
            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
            See the License for the specific language governing permissions and
            limitations under the License.
          -->
          <!-- The contents of this file will be loaded for each web application -->
          <Context reloadable="true">
          
              <!-- Default set of monitored resources -->
              <WatchedResource>WEB-INF/web.xml</WatchedResource>
          
              <!-- Uncomment this to disable session persistence across Tomcat restarts -->
              <!--
              <Manager pathname="" />
              -->
          
              <!-- Uncomment this to enable Comet connection tacking (provides events
                   on session expiration as well as webapp lifecycle) -->
              <!--
              <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
              -->
          
          </Context>
        • 创建tomcat-users.xml:touch tomcat-users.xml
        • 编写tomcat-users.xml文件
          <?xml version='1.0' encoding='utf-8'?>
          <!--
            Licensed to the Apache Software Foundation (ASF) under one or more
            contributor license agreements.  See the NOTICE file distributed with
            this work for additional information regarding copyright ownership.
            The ASF licenses this file to You under the Apache License, Version 2.0
            (the "License"); you may not use this file except in compliance with
            the License.  You may obtain a copy of the License at
          
                http://www.apache.org/licenses/LICENSE-2.0
          
            Unless required by applicable law or agreed to in writing, software
            distributed under the License is distributed on an "AS IS" BASIS,
            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
            See the License for the specific language governing permissions and
            limitations under the License.
          -->
          <tomcat-users>
          <!--
            NOTE:  By default, no user is included in the "manager-gui" role required
            to operate the "/manager/html" web application.  If you wish to use this app,
            you must define such a user - the username and password are arbitrary. It is
            strongly recommended that you do NOT use one of the users in the commented out
            section below since they are intended for use with the examples web
            application.
          -->
          <!--
            NOTE:  The sample user and role entries below are intended for use with the
            examples web application. They are wrapped in a comment and thus are ignored
            when reading this file. If you wish to configure these users for use with the
            examples web application, do not forget to remove the <!.. ..> that surrounds
            them. You will also need to set the passwords to something appropriate.
          -->
          <!--
            <role rolename="tomcat"/>
            <role rolename="role1"/>
            <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
            <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
            <user username="role1" password="<must-be-changed>" roles="role1"/>
          -->
              <role rolename="tomcat"/>  
              <role rolename="role1"/>  
              <role rolename="manager-gui" />  
              <role rolename="manager-script" />  
              <role rolename="manager-status" />  
              <user username="tomcat" password="tomcat" roles="tomcat"/>  
              <user username="both" password="tomcat" roles="tomcat,role1"/>  
              <user username="role1" password="tomcat" roles="role1"/>  
              <user username="deploy" password="tomcat" roles="manager-gui,manager-script,manager-status" />
          
          </tomcat-users>
        • 创建Dockerfile文件:touch Dockerfile(D要大写
        • 编写Dockerfile文件:vim Dockerfile  并保存。
          # First docker file from jingguoliang
          # VERSION 0.0.1
          # Author: jingguoliang
          
          #基础镜像
          FROM docker.io/tomcat:7
          
          #作者
          MAINTAINER jingguoliang <jixue_jing@163.com>
          
          #定义工作目录
          ENV WORK_PATH /usr/local/tomcat/conf
          
          #定义要替换的tomcat-users.xml文件名
          ENV USER_CONF_FILE_NAME tomcat-users.xml
          #定义要替换的context.xml文件名
          ENV CONTEXT_CONF_FILE_NAME context.xml
          
          #删除tomcat原文件tomcat-users.xml
          RUN rm $WORK_PATH/$USER_CONF_FILE_NAME
          #删除tomcat原文件context.xml
          RUN rm $WORK_PATH/$CONTEXT_CONF_FILE_NAME
          
          #复制文件tomcat-users.xml到tomcat容器下; .代表当前目录,如果Dockerfile和tomcat-users.xml;context.xml不在同一目录,需要改变配置文件路径
          COPY  ./$USER_CONF_FILE_NAME $WORK_PATH/
          #复制文件context.xml到tomcat容器下
          COPY  ./$CONTEXT_CONF_FILE_NAME $WORK_PATH/
          • From:我们将要在哪个镜像进行操作,使用格式为 From "镜像名称:版本"
          • MAINTAINER:制作者,使用格式为  MAINTAINER "作者名称"  <"邮箱"”>
          • 工作目录:此工作目录为Docker中的tomcat容器的配置文件的目录
          • ENV:定义变量,使用格式为 ENV "变量名称" "变量值"
          • RUN:执行命令,使用格式为  RUN  "命令"
          • 引用变量:$+"已经定义的变量名称",如:$WORK_PATH
        • 执行Dockerfile:docker build -t tomcat7:v1 .             如下图所示
          • tomcat7:7  新构建的镜像名称:镜像标签
          • .   当前目录

        •  成功后查看镜像文件:docker images,如下图

      •  制作镜像完成
  • 启动容器
    • 执行命令启动容器:docker run -itd -p 8070:8080 --name tomcat7 --privileged=true  tomcat7:v1
    • 查看启动的容器:docker ps ,如下图

    • 访问容器:http://localhost:8070/manager,输入用户名、密码可以通过验证,进入如下页面

  • 完成。

 

posted @ 2018-03-11 15:41  话·醉月  阅读(418)  评论(0编辑  收藏  举报