用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"]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章