1、logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<jmxConfigurator/>
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<!--保存日志的文件目录位置-->
<property name="LOG_PATH" value="log"/>
<!--打印到日志文件的日期格式-->
<property name="FILE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} --- [%15.15t] %-40.40logger{39} : %m%n"
/>
<!--打印到控制台的日期格式-->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) {faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"
/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>${LOG_PATH:-}/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 每个日志文件的大小 -->
<maxFileSize>10MB</maxFileSize>
<!-- 保留多少天的日志 -->
<MaxHistory>40</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!--控制台打印的日志配置-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<logger name="druid.sql.Statement" level="INFO" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</logger>
<logger name="java.sql.PreparedStatement" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</logger>
<logger name="org.springframework" level="INFO" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</logger>
<root level="INFO" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
2、dockerfile
# 设置JAVA版本
FROM java:8
# 拷贝运行JAR包
ADD helloworld-1.0-SNAPSHOT.jar app.jar
# 设置JVM运行参数, 这里限定下内存大小,减少开销
ENV JAVA_OPTS="\
-server \
-Xms2g \
-Xmx4g \
-XX:MetaspaceSize=1g \
-XX:MaxMetaspaceSize=2g"
#空参数,方便创建容器时传参
ENV PARAMS=""
# 入口点, 执行JAVA运行命令
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS app.jar $PARAMS"]
3、docker-compose.yml
version: "1.0"
services:
clock:
image: helloworld
volumes:
# 挂载日志 -v A:B ,A指宿主机位置,B指容器位置
- ./logs:/log
ports:
- "9004:9004"
4、jenkins构建:dockerfile文件
REPOSITORY="www.laoyangzhijia.com/library/helloworld:1.0"
# 构建镜像
cat > Dockerfile << EOF
# 设置JAVA版本
FROM java:8
# 拷贝运行JAR包
ADD target/helloworld-1.0-SNAPSHOT.jar app.jar
# 设置JVM运行参数, 这里限定下内存大小,减少开销
ENV JAVA_OPTS="\
-server \
-Xms2g \
-Xmx4g \
-XX:MetaspaceSize=1g \
-XX:MaxMetaspaceSize=2g"
#空参数,方便创建容器时传参
ENV PARAMS=""
# 入口点, 执行JAVA运行命令
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS app.jar $PARAMS"]
EOF
docker build -t $REPOSITORY .
# 上传镜像
docker login www.laoyangzhijia.com -u admin -p 123456
docker push $REPOSITORY
docker logout www.laoyangzhijia.com
5、jenkins:ssh生产环境执行配置命令
shell script:
REPOSITORY=www.laoyangzhijia.com/library/helloworld:1.0
# 部署
docker rm -f helloworld |true
docker image rm $REPOSITORY |true
docker container run -d --name helloworld -v /tmp/hello/log:/log -p 8001:8001 $REPOSITORY