参考《开源容器云Openshift》一书,制作一个Tomcat的S2I镜像(从Git下载代码,Maven打包,部署到Tomcat上。)
从Svn下载代码的S2I镜像可以参考https://github.com/nichochen/openshift-tomcat-svn,这个貌似是《开源容器云Openshift》作者的github项目。
准备环境
- 在Master上下载S2I的二进制执行文件。
# cd /opt
# wget https://github.com/openshift/source-to-image/releases/download/v1.1.7/source-to-image-v1.1.7-226afa1-linux-386.tar.gz
- 解压到/usr/bin目录下。
# tar zxvf source-to-image-v1.1.7-226afa1-linux-386.tar.gz -C /usr/bin
- 通过s2i create命令创建一个名为tomcat-s2i的S2I Builder镜像。第二个参数tomcat-s2i为S2I Builder镜像名称。第三个参数tomcat-s2i-catalog定义了工作目录的名称。
# s2i create tomcat-s2i tomcat-s2i-catalog
执行find tomcat-s2i-catalog
查看目录。
s2i目录下为S2I脚本。
其中:
- assemble:负责源代码的编译、构建以及构建产出物的部署。
- run:S2I流程生成的最终镜像将以这个脚本作为容器的启动命令。
- usage:打印帮助信息,一般作为S2I Builder镜像的启动命令。
- save-artifacts:为了实现增量构建,在构建过程中会执行此脚本保存中间构建产物。此脚本并不是必需的。
编写Dockerfile
编写一个制作Tomcat的S2I镜像。Dockerfile的内容如下:
# tomcat-s2i
FROM maven:3.3-jdk-7
# TODO: Put the maintainer name in the image metadata
MAINTAINER huliaoliao
# TODO: Rename the builder environment variable to inform users about application you provide them
ENV BUILDER_VERSION 1.0
#TODO: Set labels used in OpenShift to describe the builder image
LABEL io.openshift.s2i.scripts-url=image:///usr/libexec/s2i \
io.k8s.de