步骤一、首先将项目打包放在指定目录下
项目jar包名称为 micro-app.jar
步骤二、将jar包名称改为指定名称,执行命令
docker build -t micro-gateway:v1.4 .
意义:执行当前目录下的dockerfile文件创建镜像,镜像的标签为 micro-gateway:v1.4
dockerfile的文件内容为
FROM 你的ip:你的端口/library/jdk8:v1.0 MAINTAINER 你的标识 COPY ./restart.sh /restart.sh COPY ./micro-app.jar /micro-app.jar ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ENV NACOSADDRESS="" ENV NACOSPORT="" ENV REDISADDRESS="" ENV REDISPORT="" ENV MYSQLADDRESS="" ENV MYSQLNAME="" ENV MYSQLPASSWORD="" EXPOSE 31006 WORKDIR / ENTRYPOINT ["/bin/sh","/restart.sh"]
文件中的 NACOSADDRESS 等变量,对应spring boot 工程配置文件中的变量,yml配置文件的变量用${}修饰
restart.sh文件的内容如下
#!/bin/bash # Author : ** # Date : ** ps -ef|grep micro-app|grep -v grep|cut -c 9-15|xargs kill -9 nohup java -Xms512m -Xmx1024m -XX:MaxPermSize=128m -Djava.net.preferIPv4Stack=true -jar micro-app.jar > log.out & sleep 2 R=0 tail -f log.out|while read line do ###tail -f bug, double validate ### b=`echo $line|grep "Tomcat initialized with port(s):"|wc -l` if [ $b -eq 1 ];then R=1 fi a=`echo $line|grep "Tomcat started on port(s):"|wc -l` if [ $a -lt 1 ];then echo $line else if [[ $R == 0 ]];then echo $line else echo $line ps -ef | grep 'tail -f log.out' | grep -v grep | awk '{print $2}' | xargs kill -9 fi fi done echo 'tomcat start complete!!' exit
步骤三、标记本地镜像,将其归入仓库
docker tag micro-gateway:v1.4 你的仓库地址:你的仓库端口/servers/micro-gateway:v1.4
步骤四、上传镜像到镜像仓库
docker push 你的仓库地址:你的仓库端口/servers/micro-gateway:v1.4
步骤五、使用rancher发布镜像,发布时指定你的变量值