1、出现问题

新项目采用springboot2.3之后的自带打包方式打包成功后,启动发现目录文件里面没有日志生成

logs 文件路径下没有日志生成。
docker-compose.yaml 目录挂载如下:

version: "3"
services:dedupe:image: XXXcontainer_name: dedupeenvironment:- TZ=Asia/Shanghai- LANG=zh_CN.UTF-8- JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8ports:- 8082:8082volumes:- ./config:/workspace/config- ./logs:/workspace/logsrestart: always

日志相关配置

logging:file:name: logs/application.loglevel:com.gildata: INFOlogback:rollingpolicy:max-file-size: 100MBmax-history: 10

2、发现问题

检查外部所有配置文件没有问题之后,进入容器内部查看日志文件是否生成

docker exec -it 容器id /bin/bash

查看对应容器内部日志文件生成路径是是否存在日志文件

drwxr-xr-x. 1 cnb  cnb  32 Feb  3 13:22 ./
drwxr-xr-x. 1 root root 48 Feb  3 13:22 ../
drwxr-xr-x. 1 cnb  cnb  60 Jan  1  1980 BOOT-INF/
drwxr-xr-x. 3 cnb  cnb  80 Jan  1  1980 META-INF/
drwxr-xr-x. 2 root  root  35 Feb  3 13:22 config/
drwxr-xr-x. 2 root  root  29 Feb  3 13:22 logs/
drwxr-xr-x. 3 cnb  cnb  29 Jan  1  1980 org/

发现logs 下面确实没有日志文件生成,但是config下面的配置文件是外部成功的映射进来了。
同时发现,config 和logs 2个路径的用户都是root,而其他的辣眼睛都是 cnb 用户。初步怀疑是路径权限问题,导致日志没有写进去,但是config由于是读操作,所以没有问题。

3、解决问题

更改映射的2个路径的权限,重新生成启动容器

chown -R 1000:1000 config/
chown -R 1000:1000 logs/

发现日志可以正常生成,宿主机中也出现了日志。同时容器内部的权限正常

drwxr-xr-x. 1 cnb  cnb  32 Feb  3 13:22 ./
drwxr-xr-x. 1 root root 48 Feb  3 13:22 ../
drwxr-xr-x. 1 cnb  cnb  60 Jan  1  1980 BOOT-INF/
drwxr-xr-x. 3 cnb  cnb  80 Jan  1  1980 META-INF/
drwxr-xr-x. 2 cnb  cnb  35 Feb  3 13:22 config/
drwxr-xr-x. 2 cnb  cnb  29 Feb  3 13:22 logs/
drwxr-xr-x. 3 cnb  cnb  29 Jan  1  1980 org/

4、问题原因

错误的原因是,docker-compose启动的时候会分别在容器和宿主机上创建目录,在宿主机上是使用docker进程来创建目录的,默认使用的角色是root,目录挂载的时候会把这个用户同步到容器里面的目录,所以容器里面logs目录权限也是root,但是容器里面的应用是使用cnb用户来运行的,当然没有往logs目录里面写的权限,所以就报错了;因为这两个角色是会同步的,所以解决的办法就是修改宿主机的日志权限为docker里面用户的权限;可以使用如下命令修改宿主机日志目录的权限:

chown -R 1000:1000 对应路径

当然这是一个快速的解决方案,一劳永逸的话,可以在打包的时候权限相关的操作,使用root用户将容器中的logs目录赋权限为cnb

docker容器挂载权限问题 导致日志文件不生成相关推荐

  1. Docker容器挂载

    docker的理念:将应用和环境打包成一个镜像!通过镜像启动容器运行 问题:在容器中存储的程序数据是需要持久化的,不能容器删了数据也随之删除.比如,安装一个MySQL容器,在其中存储了大量数据,结果把 ...

  2. Docker 容器挂载摄像头并显示图像

    Docker本身的工作模式是命令行的,但有时候我们需要在Docker容器里运行一些图形化东西如:调用摄像头,输出图像等等,这个时候我们就不得不研究一下如何在Docker中进行 "可视化&qu ...

  3. 解决Docker容器没有权限写入宿主机目录

    在应用docker容器的时候,更多的时候我们会把宿主机的目录挂载到docker容器中. 在宿主机的文件夹权限隶属于root时,我们需要将文件夹的权限用户进行 chown 设置,才能保证目录的内容的正常 ...

  4. Docker容器和本机之间的文件传输

    2019独角兽企业重金招聘Python工程师标准>>> 主机和容器之间传输文件的话需要用到容器的ID全称. 获取方法如下: 1.先拿到容器的短ID或者指定的name. 2.然后根据这 ...

  5. Python FastApi:快速建立docker容器/挂载共享文件夹/导入导出

    一.目的 a.快速把原有fastapi代码部署到docker,让docker在server运行. b.不涉及docker深入设置. c.使用python第三方lib少或简单. 二.步骤 ps:请提前安 ...

  6. 在docker容器里,ffmpeg给视频文件内嵌字幕文件,不生效,如何解决?

    用ffmpeg命令,发现执行成功,但视频文件就是没有字幕.看不出问题出现在什么地方.后来直接用ffmpeg添加水印命令测试,发现是缺少字体文件,如下图所示: 报Fontconfig error: Ca ...

  7. linux创建data文件夹权限,权限不足导致数据文件夹 data/ 创建失败

    与 #59 有关. 现在, B4X 会将用户数据存储在程序所在目录下.如果程序运行目录不可写,创建data/目录的操作将会失败(报错"无法为配置创建目录"),进而在之后需要对dat ...

  8. 宿主机docker容器互传文件命令

    docker ps查看运行中的docker容器id 最前面这一列container id就是了,真实的id比这个要长,但使用这个短的就行了,也是唯一的. docker容器往宿主机传文件 docker ...

  9. 利用 ELK 搭建 Docker 容器化应用日志中心

    概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志收集. 本文即将阐述如何利用ELK日志中心来收集容器化 ...

最新文章

  1. Effective Java之对可恢复的情况使用受检异常,对编程错误使用运行时异常(五十八)
  2. 在navicat中新建数据库
  3. storyboard搭建项目_swift项目第五天:swift中storyBoard Reference搭建主界面
  4. 罗永浩欲直播带货,京东说可以帮忙联系
  5. 主板有电无法启动_主板通电但不能启动怎么回事
  6. 数据库学mysql python_mysql学习(4)python操作数据库
  7. ffmpeg之YUV420P转RGB24
  8. 弄懂 JRE、JDK、JVM 之间的区别与联系
  9. opencv cv::Mat::convertTo()函数
  10. 综述---图像处理中的注意力机制
  11. outlook2016修改服务器,Outlook 2016 pop3 设置
  12. Vuejs中字符串判空处理--如何判断字符串是否为空或不为空
  13. Github+Jekyll —— 创建个人免费博客(四)jekyll第一个页面
  14. python程序 爱意_情人节到了,隔离在家的你还不快用Python给你的她表达下爱意?...
  15. c语言程序实现进程的管道通信,C 进程间通信--命名管道通信代码实现及其原理图示...
  16. 思科vrrp实例_Cisco 交换机 vrrp+mstp 配置实例
  17. linux怎样保存文件,linux不能保存文件如何解决
  18. 在Linux上搭建nim服务器安装AIX
  19. 华为鸿蒙系统朋友圈扩大,华为发力全屋智能新赛道,能弥补手机下滑留下的空缺吗?...
  20. 怎么选择好的CCD视觉检测?

热门文章

  1. 强化学习笔记(4)之蒙特卡洛法
  2. GCN图卷积神经网络-中文文本分类 pytorch
  3. Android常用第三方框架记录
  4. 压控振荡器的设计与分析
  5. 人工神经网络连接方式,全连接神经网络作用
  6. Imagemagick使用
  7. 装机大师如何用U盘重装原版win7系统
  8. 上位机编程工控控件全览
  9. VC----实现汉字简繁转换
  10. fifo介绍及fifo IP核使用(工程文件获取请参考文末)