使用docker打jar包为镜像

dockerFile文件

#!/bin/bash
#获取jdk 镜像
FROM 10.0.0.1:8080/basse/xx_baseimage_jdk1.8:1.0
#定义环境变量
# jar 名称
ENV JAR_NAME=bw-customize-business
#jar 安装的工作目录
ENV JAR_HOME=/xx/yy/${JAR_NAME}
#日志保存路径
ENV LOG_PATH=/mnt/
#挂载
ENV DATA_PATH=/data/file
#服务端口
ENV SERVER_PORT=8082

#创建目录
RUN mkdir -p ${JAR_HOME} && mkdir -p ${JAR_HOME}/tmpdir && mkdir -p ${LOG_PATH} && mkdir -p ${DATA_PATH}
#授权
ADD ${JAR_HOME}/{JAR_NAME}.jar
RUN chmod a+x ${JAR_HOME}/{JAR_NAME}.jar
#指定是时区 如果存在可不使用
RUN /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo '/Asia/Shanghai' > /etc/timezone

#自定义启动参数使用"" 可执行占位符${name}
EVN MYSELF_JAVA_OPTS="XX:+PrintGCDetails -Djava.io.tmpdir=${JAR_HOME}/tmpdir -XX:+PrintGCDateStamps -DAPP_HOME=${LOG_PATH} -Xloggc:${LOG_PAHT}/${JAR_NAME}_gc_log.out -DAPP_NAME=${JAR_NAME}"
#设置字符集
RUN export LANG=zh_CN.UTF-8
# 必须申明需要暴露的端口   dis 需要暴露socket 端口 EXPOSE ${SERVER_PORT} 9005 
EXPOSE ${SERVER_PORT} 
#指定工作目录  ,命令执行的位置
WORKDIR ${JAR_HOME}

#运行程序 ${JAVA_OPTS} k8s平台配置的JVM参数 ${MYSELF_OPTS} K8s平台配置应用参数 
#注册中心 地址以实际为准 基于k8s 容器特性服务名称即可为域名,需要规划好 bw-common-registry-server:8889/eureka/
ENTRYPOINT ["sh","-c","cd ${JAR_HOME}; java ${JAVA_OPTS} ${MYSELF_JAVA_OPTS} -jar ${JAR_NAME}.jar --spring.profiles.active=${JAR_NAME}-dkh --eureka.client.serviceUrl.defaultZone=http://bw-common-registry-server:8889/eureka/ ${MYSELF_OPTS}"]  

安全DockerFile

#!/bin/bash
#获取jdk 镜像
FROM 10.0.0.1:8080/basse/xx_baseimage_jdk1.8:1.0
#定义环境变量
# jar 名称
ENV JAR_NAME=bw-customize-business
#jar 安装的工作目录
ENV JAR_HOME=/xx/yy/${JAR_NAME}
#日志保存路径
ENV LOG_PATH=/mnt/
#挂载
ENV DATA_PATH=/data/file
#服务端口
ENV SERVER_PORT=8082

#创建目录
RUN mkdir -p ${JAR_HOME} && mkdir -p ${JAR_HOME}/tmpdir && mkdir -p ${LOG_PATH} && mkdir -p ${DATA_PATH}
#授权
ADD 安全jar包 ${JAR_HOME}/iast/agent/安全jar包
ADD ${JAR_HOME}/{JAR_NAME}.jar
RUN chmod a+x ${JAR_HOME}/{JAR_NAME}.jar
#指定是时区 如果存在可不使用
RUN /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo '/Asia/Shanghai' > /etc/timezone

#自定义启动参数使用"" 可执行占位符${name}
EVN MYSELF_JAVA_OPTS="XX:+PrintGCDetails -Djava.io.tmpdir=${JAR_HOME}/tmpdir -XX:+PrintGCDateStamps -DAPP_HOME=${LOG_PATH} -Xloggc:${LOG_PAHT}/${JAR_NAME}_gc_log.out -DAPP_NAME=${JAR_NAME}"
#设置字符集
RUN export LANG=zh_CN.UTF-8
# 必须申明需要暴露的端口   dis 需要暴露socket 端口 EXPOSE ${SERVER_PORT} 9005 
EXPOSE ${SERVER_PORT} 
#指定工作目录  ,命令执行的位置
WORKDIR ${JAR_HOME}

#运行程序 ${JAVA_OPTS} k8s平台配置的JVM参数 ${MYSELF_OPTS} K8s平台配置应用参数 
#注册中心 地址以实际为准 基于k8s 容器特性服务名称即可为域名,需要规划好 bw-common-registry-server:8889/eureka/
ENTRYPOINT ["sh","-c","cd ${JAR_HOME}; java -javaagent:${JAR_HOME}/iast/agent/安全jar包 -Dtcsec.app.key=平台显示检测名称 -Dtcsec.server.name=${JAR_NAME} ${JAVA_OPTS} ${MYSELF_JAVA_OPTS} -jar ${JAR_NAME}.jar --spring.profiles.active=${JAR_NAME}-dkh --eureka.client.serviceUrl.defaultZone=http://bw-common-registry-server:8889/eureka/ ${MYSELF_OPTS}"]  

执行脚本

#!/bin/bash
jarname=$1
version=$2
if [ ! -n "$1" ]; then 
    echo -e "输入 服务名称 版本tag sh install.sh jarname version 例如 sh install.sh bw-customize-business 202205026"
elif[! -n "$2" ]; then    
    echo -e "查看version.txt 后输入新版本tag 例如 sh install.sh bw-customize-business 202205026"
else
echo "current version ${version}" > version.txt
#打镜像
sudo docker bulid -t ${jarname}:${version} -f Dockerfile .
#生成镜像
sudo docker tag ${jarname}:${version} 10.71.64.124:31104/eis/${jarname}:${version}
#推送镜像
sudo docker push 10.71.64.124:31104/eis/${jarname}:${version}

fi

在dockerfile中使用RUN 执行shell,有时需要交互回答 yes或者no。实现方式如下:

RUN sh -c ‘/bin/echo -e “y” | keytool -import -alias server.cer -file $JAVA_HOME/server.cer -keystore’

RUN sh -c ‘/bin/echo -e\nyes\n\nyes” | keytool -import -alias server.cer -file $JAVA_HOME/server.cer -keystore’

添加链接描述

你可能感兴趣的:(docker,docker,java)