上一篇文章讲到可以利用jenkins构建后得到部署包,本章会记录一下如何把部署包做成应用的镜像启动。
这里涉及2块内容,第一个是如何在不需要jenkins的情况下做应用的镜像,第二是如何在jenkins中配置脚本去做镜像运行。第一部分不是本次的关注点,会略微提一下。
一、做镜像
在服务器上做应用的镜像,一般是写 dockerfile,此处也不列外,目录结构如下: image.pngDockerfile 和 all.sh 分别如下:
[root@gaoyx preview]# cat Dockerfile
FROM alpine-tomcat:v1.0
MAINTAINER chances-gyx
VOLUME [ "/opt/product/preview/" ]
ADD ./preview.xml /opt/product/tools/tomcat/conf/Catalina/localhost/
RUN mkdir -p /opt/product/apps
ADD ./apps/preview/ /opt/product/apps/preview/
WORKDIR /opt/product/tools/tomcat/
ADD ./all.sh /root/
RUN chmod +x /root/all.sh
CMD /root/all.sh
[root@gaoyx preview]# cat all.sh
#!/bin/bash
export JAVA_HOME=/data/jdk
export PATH=$JAVA_HOME/bin:$PATH
logsDir="/opt/product/data/preview/tomcat-preview-log"
cd /opt/product/tools/tomcat/
rm -rf logs
if [ ! -d $logsDir ]; then
mkdir -p $logsDir
fi
ln -s /opt/product/data/preview/tomcat-preview-log logs
sh /opt/product/tools/tomcat/bin/catalina.sh run
里面用到的tomcat基础镜像都是做好的,alpine-tomcat:v1.0,挂载目录也是根据应用实际情况配置的。
二、在jenkins中配置做镜像+启动
1)增加构建步骤: image.png写入以下脚本:
#!/bin/bash
dates=`date "+%Y%m%d"`
projects="preview"
sudo rm -rf /opt/product/preview/apps/preview/*
sudo cp -rf /var/lib/jenkins/workspace/preview/WebContent/* /opt/product/preview/apps/preview/
sudo docker stop $projects || true
sudo docker rm -f $projects || true
sudo docker rmi $projects:$dates || true
sudo docker build -t $projects:$dates /opt/product/preview
sudo docker run --name=$projects -d -ti -p 38001:8080 -v /opt/product/data:/opt/product/data -v /data/jdk:/data/jdk $projects:$dates
构建,竟然出错了
image.png
我百度了一下解决了,方法:
编辑 /etc/sudoers 文件,将Default requiretty注释掉。
sudo vim /etc/sudoers
#Default requiretty
#注释掉 Default requiretty 一行
然后再构建一次就成功了,可以看到服务器上已经成功启动的镜像:
image.png
应用访问正常:
image.png
另外,
再附1个微服务(jar包 )的Dockerfile 应用的编写方式:
[root@gaoyx hn_telecom_collect]# cat Dockerfile
FROM alpine-tomcat:v3.0
MAINTAINER chances-gyx
VOLUME [ "/opt/product/data/" ]
ADD ./cbms_telecom_collect-0.0.1-SNAPSHOT.jar /opt/product/tools/cbms_telecom_collect-0.0.1-SNAPSHOT.jar
#RUN mkdir -p /opt/product/apps
RUN sh -c 'touch /opt/product/tools/cbms_telecom_collect-0.0.1-SNAPSHOT.jar'
ENV JAVA_HOME="/data/jdk"
ADD ./all.sh /root/
RUN chmod +x /root/all.sh
ENTRYPOINT ["/root/all.sh"]
CMD ["/usr/sbin/init"]
[root@gaoyx hn_telecom_collect]# cat all.sh
#!/bin/bash
export JAVA_HOME=/data/jdk
export PATH=$JAVA_HOME/bin:$PATH
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
cd /opt/product/tools/
rm -rf config
ln -s /opt/product/data/hn_telecom_collect/config
cd /opt/product/tools/
$JAVA_HOME/bin/java $JAVA_OPTS -jar -Dspring.config.location=./config ./cbms_telecom_collect-0.0.1-SNAPSHOT.jar
[root@gaoyx hn_telecom_collect]#
<完!>
网友评论