命令行传参给logback
- 第一种是使用
${} 来动态读取系统命令行参数来指定日志输出路径
<property name="LOG_FILE" value="${BUILD_FOLDER:-logs}"/>
默认在项目的根目录下生成日志文件,可以通过 java -jar -DBUILD_FOLDER="" 来指定日志输出路径,${BUILD_FOLDER:-logs} 中的 logs 可以替换为任意指定路径作为默认的输出路径
- 第二种是使用
springProperty 来获取到application.yml 中的配置来指定输出路径
<springProperty scope="context" name="log.path" source="logging.path" defaultValue="E:/log"/>
可以读取到 application.yml 中配置的路径,但是会同时在 defaultValue 的路径中生成日志文件,如果没有 defaultValue , 则同时会在项目根目录中生成一个 logging.path_is_undefine 日志文件,默认生成的日志文件不会随着项目日志的增加而增加, 新增的日志只会在 logging.path 指定路径中新增。 造成这种现象的原因是 logback 的配置文件会比 springboot 的配置文件先加载,所以一开始 logback 是读取不到application.yml 中的配置的。网上说将logback.xml 更换为logback-spring.xml 就不会出现这种情况,但是我更改过后依然是同样的情况,所以推荐使用第一种方法来动态指定 logback 日志输出路径。
Dockerfile 传参
1.构建传参数
docker build --build-arg TOMCAT_VERSION="${TOMCAT_VERSION}" -t my-dest-image-"${TOMCAT_VERSION}" .
Dockerfile
ARG TOMCAT_VERSION
FROM my-src-image-${TOMCAT_VERSION}:1.0
ARG TOMCAT_VERSION
RUN echo "${TOMCAT_VERSION}"
注意:
-
参数使用时要用 {} 括起来,调用 FROM 语句时报错 invalid reference format -
FROM 之后还要使用该参数的话,需要重新引入一下
2.运行传参数
Dockerfile
FROM pre-harbor.webull.com/library/oraclejdk:8u192
MAINTAINER alex "lyj@webull.com"
ENV JAVA_APP_JAR books-records-service-0.1.0-SNAPSHOT.jar
COPY target/${JAVA_APP_JAR} ${JAVA_APP_DIR}
EXPOSE ${SERVER_PORT}
对SERVER_PORT 传参数
docker run -d -p 2000:8080 镜像名称 -e SERVER_PORT="8080"
|