docker-swarm部署springboot项目日志不打印文件

1、场景

        springboot单体项目,采用docker-swarm进行部署,使用docker stack run命令执行运行并生成对应的容器,但是发现通过docker logs -f containerId可以查看到项目运行日志,但是通过挂载的日志文件路径发现日志不存在,甚至日志文件都没有生成

2、场景分析

        首先查看项目的docker-compose.yml编排文件,如下图所示:

        对比编排文件,启动好的容器中已经存在了logback.xml日志配置文件,而且volumes目录挂载也没有问题,不生效的话,可能就是指定的日志配置文件没有生效,而是使用了构建的镜像里面使用的jar里面带的logback.xml配置文件,如是开始验证

        调整指定的外部logback.xml配置文件日志打印级别为INFO,因为原本jar包自带的logback.xml日志级别为DEBUG,可以通过docker logs -f containerId查看控制台日志的打印级别,发现容器启动之后,日志打印中出现了debug级别日志,如是可以判定使用的是jar包自带的logback.xml日志配置,如是考虑在项目配置文件application.yml中进行指定logback.xml配置文件,因为application.yml使用的是指定的配置文件,logback.xml和application.xml在容器中的位置是在同一个目录下,如下图:

        因为springboot配置文件中有一个配置项: logging.config可以用来指定配置文件,所以修改配置文件如下:

         由于logback.xml和application.yml在容器中是处于同一目录下,所以直接指定logback.xml为logging.config的值,修改好配置之后,再次启动容器,发现日志在日志文件中正常打印了;

3、场景总结

        总的来说,该场景下日志在日志文件中不生效的原因就是因为读取了jar包下面的日志配置,导致外部指定的logback.xml日志配置文件不生效,需要手动在生效的项目配置文件中显式指定日志配置文件

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Docker Compose中部署Spring Boot项目和MySQL数据库,并创建表结构,可以按照以下步骤进行操作: 1. 首先,确保已经在你的Spring Boot项目中定义了数据库表结构。这可以通过使用JPA或者手动创建SQL脚本来完成。 2. 在你的Docker Compose文件中,定义两个服务:一个是Spring Boot应用程序,另一个是MySQL数据库。以下是一个简单的示例: ```yaml version: '3' services: app: build: context: . dockerfile: Dockerfile ports: - 8080:8080 depends_on: - db db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: your_password MYSQL_DATABASE: your_database_name MYSQL_USER: your_username MYSQL_PASSWORD: your_password volumes: - ./data:/var/lib/mysql ``` 在上面的示例中,`app`服务是你的Spring Boot应用程序,`db`服务是MySQL数据库。你可以根据自己的需求进行调整。 3. 确保在你的Spring Boot应用程序中的数据库配置文件(如`application.properties`或`application.yml`)中,将数据库连接信息配置为以下内容: ```properties spring.datasource.url=jdbc:mysql://db:3306/your_database_name spring.datasource.username=your_username spring.datasource.password=your_password ``` 这里的`db`是Docker Compose中定义的MySQL服务的名称。 4. 在你的Spring Boot应用程序根目录下创建一个名为`Dockerfile`的文件,并添加以下内容: ```Dockerfile FROM openjdk:8-jdk-alpine COPY target/your_app.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 这个Dockerfile文件将使用Alpine版本的OpenJDK 8作为基础镜像,并将构建的Spring Boot应用程序的JAR文件复制到镜像中。 5. 最后,在命令行中进入你的项目根目录,并运行以下命令来构建和启动Docker容器: ``` docker-compose up --build ``` 这将根据Docker Compose文件构建和启动两个容器:一个是包含你的Spring Boot应用程序的容器,另一个是MySQL数据库的容器。在启动过程中,数据库表结构将会自动创建。 请注意,以上步骤中的配置信息应该根据你的实际需求进行调整,例如数据库名称、用户名、密码等。另外,确保你已经安装了DockerDocker Compose,并且已经在命令行中切换到了正确的项目目录。 希望以上信息对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值