步驟一、首先將項目打包放在指定目錄下
項目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發布鏡像,發布時指定你的變量值