Docker项目必备

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
posted @ 2024-05-02 12:03  KingRabbit  阅读(4)  评论(0编辑  收藏  举报