美文网首页
基于tomcat官方镜像,实现自动挂载容器内配置文件到宿主机

基于tomcat官方镜像,实现自动挂载容器内配置文件到宿主机

作者: 沉思的雨季 | 来源:发表于2020-04-23 17:26 被阅读0次

一、Tomcat容器化部署项目存在的问题

1.Tomcat容器启动时挂载本地目录,不能自动拷贝容器内文件到宿主机目录。

2.Tomcat基础镜像中的配置文件,在实际部署时需要自定义修改,并且希望修改后可以长久保留,docker镜像升级后可以继续使用原有配置。

3.Tomcat容器挂载目录希望只映射配置文件,程序文件不挂载到宿主机。

二、镜像修改过程(以平台项目为例)

1.修改dockerfile文件,增加挂载卷并拷贝自定义shell脚本

vi dockerfile

文件内容:

#使用docker aqsc:tomcat8-jre8-alpine镜像
FROM tomcat:8-jre8-alpine

#作者信息
MAINTAINER cuishanwei <kavin>
LABEL Description="This image is used to serve aqsc-tpridmp project"  Version="0.1"

SHELL ["/bin/sh", "-c"],

#添加环境变量
ENV JAVA_OPTS "$JAVA_OPTS -server -Xms1024M -Xmx4096M -Xss1024K -Xmn1024M -XX:PermSize=512M -XX:MaxPermSize=2048M -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=65"

#将WEB程序加入镜像中
#dockerfile增加命令
RUN \
#新建web根目录
mkdir -p /data \
&& mkdir -p /data/configs \
&& mkdir -p /data/configs/tpridmp-service 
#将程序加入新建的目录
ADD configs /data/configs/tpridmp-service/configs 
ADD file /data/configs/tpridmp-service/file 
ADD TPRI-DMP /usr/local/tomcat/webapps/TPRI-DMP
ADD server.xml /usr/local/tomcat/conf/
ADD catalina.sh /usr/local/tomcat/bin/

#Define data volumes
VOLUME ["/webapp/conf"]

#copy files

COPY assets/ /assets/
RUN chmod 777 /assets/*
RUN chmod 777 /usr/local/tomcat/bin/catalina.sh
#工作区域
WORKDIR /usr/local/tomcat/webapps

#暴露端口
EXPOSE 8080

#启动时运行tomcat
CMD ["catalina.sh", "run"]

2.在dockerfile同目录创建assets目录,目录下新建wrapper.sh文件

mkdir -p  assets

cd assets

vi  wrapper.sh

文件内容:

#!/bin/bash
# Generate copy host mount files for the first time
if [[ ! -e /webapp/conf/web.xml ]]; then
        echo "Copy config file (web.xml)..."
#        cp -r /assets/conf/*   /webapp/conf/
        cp -f /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/web.xml /webapp/conf/web.xml
        chmod 0600 /webapp/conf/web.xml
fi

if [[ ! -e /webapp/conf/datasource.xml ]]; then
        echo "Copy config file (datasource.xml)..."
        cp -f /data/configs/tpridmp-service/configs/datasource.xml /webapp/conf/datasource.xml
        chmod 0600 /webapp/conf/datasource.xml
fi

if [[ ! -e /webapp/conf/system-config.properties ]]; then
        echo "Copy config file (system-config.properties)..."
        cp -f /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/classes/system-config.properties /webapp/conf/system-config.properties
        chmod 0600 /webapp/conf/system-config.properties
fi

if [[ ! -e /webapp/conf/jbpm.hibernate.cfg.xml ]]; then
        echo "Copy config file (jbpm.hibernate.cfg.xml)..."
        cp -f /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/classes/jbpm.hibernate.cfg.xml /webapp/conf/jbpm.hibernate.cfg.xml
        chmod 0600 /webapp/conf/jbpm.hibernate.cfg.xml
fi

if [[ ! -e /webapp/conf/log4j.properties ]]; then
        echo "Copy config file (log4j.properties)..."
        cp -f /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/classes/log4j.properties /webapp/conf/log4j.properties
        chmod 0600 /webapp/conf/log4j.properties
fi


# Copy project config files
cp -f /webapp/conf/datasource.xml /data/configs/tpridmp-service/configs/datasource.xml
cp -f /webapp/conf/web.xml /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/web.xml
cp -f /webapp/conf/system-config.properties /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/classes/system-config.properties
cp -f /webapp/conf/log4j.properties /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/classes/log4j.properties
cp -f /webapp/conf/jbpm.hibernate.cfg.xml /usr/local/tomcat/webapps/TPRI-DMP/WEB-INF/classes/jbpm.hibernate.cfg.xml

3.修改catalina.sh 文件,插入对自定义脚本的引用

vi  catalina.sh 

文件内容:

#Add  customize  shell

source  wrapper.sh

4.修改server.xml文件,增加端口、进程自定义配置

vi  server.xml

文件内容:

  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" 
               URIEncoding="UTF-8" enableLookups="false" disableUploadTimeout="true" 
               minSpareThreads="15" maxSpareThreads="50" maxThreads="200" acceptCount="200" 
               minProcessors="5" maxProcessors="100" useURIValidationHack="false" 
               compression="on" compressionMinSize="2048" useBodyEncodingForURI="true" 
               compressableMimeType="text/html,text/xml,text/JavaScript,text/css,text/plain" />

三、构建镜像,运行容器测试

1.构建镜像

docker build -t tpri-dmp:1.0 . -f dockerfile

2.运行容器,挂载配置到宿主目录

docker run -d --name tpri-dmp -v /data/tpri-dmp/conf:/webapp/conf -p 8080:8080 tpri-dmp:1.0

3.进入/data/tpri-dmp/conf目录查看配置文件是否挂载出来,修改配置文件,重启容器看配置是否生效。

相关文章

  • 基于tomcat官方镜像,实现自动挂载容器内配置文件到宿主机

    一、Tomcat容器化部署项目存在的问题 1.Tomcat容器启动时挂载本地目录,不能自动拷贝容器内文件到宿主机目...

  • docker安装mysql 8

    1. 运行容器,自动下载镜像 2. 创建主机挂载配置文件 conf存放配置文件data存放数据库文件 3. 初始化...

  • Docker镜像升级保留数据(volume)

    原理:修改容器配置文件中"MountPoints"节点 本例: 镜像:tomcat 挂载卷:/var/lib/do...

  • docker安装gitlab

    本文阐述如何使用docker安装gitlab官方镜像,并且实现数据卷挂载宿主机,即使容器删除也不会导致数据丢失。 ...

  • Docker-nginx篇

    docker中添加nginx容器。 下载nginx镜像仓库 查看官方教程 创建nginx容器 复制配置文件到宿主机...

  • docker安装mysql

    本文阐述如何使用docker安装mysql官方镜像,并且实现数据卷挂载宿主机,即使容器删除也不会导致数据丢失。 环...

  • docker mysql

    官方镜像仓库 拉取镜像 挂载外部数据和配置 配置文件内容如下: 执行下面命令创建容器 参数说明 进入容器内部

  • docker搭建gitlab

    1:查找镜像 2:镜像拉取 3:运行容器 注:主机目录(容器目录)会自动创建 4:修改配置文件 前言:按上面的方式...

  • Docker 安装 zookeeper

    一、安装单机版 拉取镜像 创建挂载目录 创建配置文件 4.单机主机启动容器 命令说明:--network host...

  • 容器挂载数据卷的几种情况

    挂载宿主机存在的【文件】到容器不存在的【文件】 挂载宿主机存在的【文件】到容器存在的【文件】 挂载宿主机不存在的【...

网友评论

      本文标题:基于tomcat官方镜像,实现自动挂载容器内配置文件到宿主机

      本文链接:https://www.haomeiwen.com/subject/vjgaihtx.html