用Dockerfile打包Openfire服务镜像

最近接手了一个容器云化的运维项目和一个数据治理平台的建设项目,二者都属于某国字头企业的年度重点建设项目。这个容器云化项目主要是依赖 Kubernets集群来管理docker业务镜像。
关于docker业务镜像的打包,该项目主要通过docker-build调用dockerfile脚本来完成docker业务镜像的打包。尽管该项目中有相关人士称可以通过在容器的外挂永久存储上准备配置文件实现docker业务的“部署即配置”,完全自动化安装部署并配置业务应用。事实上,这种做法并不总是有效,可以说我按照他提供的wiki文档去操作时,都没有成功实现“部署即配置”式的完全自动化安装部署并配置业务应用。
经查询Dockerfile的相关资料,发现 CMD 指令是支持shell脚本做参数的,因此可行的方法是docker镜像和shell脚本配合使用,而不是和配置文件配合使用。
以打包Openfire服务“部署即可用”的自动化部署配置为例:
在这个项目中,openfire要使用MySQL作为账户信息的数据存储媒介,可行的思路是先创建MySQL初始化所需的账户信息数据库sql文件及授权sql文件,在Docker启动过程中指定shell脚本运行sql文件来实现MySQL的自动初始化和设置,达到“部署即可用”的自动化部署配置目标,在docker镜像被部署并运行后即可通过客户端Spark直接注册新的账号并登陆和使用Openfire服务,避免了手工部署时对Openfire服务的初始化配置工作。

openfire的dockerfile如下,待闲时我做完MySQL自动化出事设置的实验后再补充带MySQL初始化的dockerfile:

This is a openfire Dockerfile

Version 2.0

Base images 基础镜像

FROM centos

#MAINTAINER 维护者信息
MAINTAINER PomengTeng
#ADD 文件放在当前目录下,压缩文档拷过去会自动解压
ADD openfire-4.5.1-1.x86_64.rpm /temp
ADD dk-linux-x64.rpm /temp

#RUN 执行以下命令
RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && yum clean all && yum makecache
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all

#WORKDIR 相当于cd
WORKDIR /temp
RUN yum localinstall jdk-linux-x64.rpm
RUN yum localinstall openfire-4.5.1-1.x86_64.rpm
RUN export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre
RUN export PATH=$PATH:$JAVA_HOME/bin

#EXPOSE 映射端口
EXPOSE 9000

#CMD 运行以下命令
CMD ["/opt/openfire/bin/openfire.sh"]

猜你喜欢

转载自blog.51cto.com/6286393/2485649