Python/Docker: 如何将 python 日志模块与 docker 一起使用?

Python/Docker: How to use python logging module with docker?

我有一个简单的设置,python 的日志记录模块设置在 python 应用程序中,如下所示:

app_logger = logging.getLogger('main_thread')

file_handler = RotatingFileHandler('/home/pi/FaunderGateway_Log.log', maxBytes=10000000, backupCount=5)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s')
file_handler.setFormatter(formatter)

app_logger.addHandler(file_handler)

我有一个 RotatingFileHandler,其绝对路径为“/home/pi/FaunderGateway_Log.log”(如果有人想知道,此应用程序将 运行ning 在 raspberry pi 上),现在我'我正在尝试使用 docker.

将应用程序容器化

构建并尝试 运行 我的容器后,出现错误:

[Errno 2] No such file or directory: '/home/pi/FaunderGateway_Log.log'

现在,我知道 docker 在容器中有自己的文件系统,与主机的 (pi) 文件系统分开,但我想告诉 docker 让我的python app在主机绝对路径下正常登录/home/pi/.如何实现?

我读了一些其他提到卷的帖子,但我不太了解它们。

我正在使用此命令 运行 我的容器:

sudo docker run --privileged fg

--privileged 标志使我可以访问 pi 上的 /dev/mem 文件,以进行 GPIO 操作。

更新:请注意,我希望我的 docker 容器在 主机路径“/home/pi” 中创建日志文件,我不不想在容器本身内创建一个“/home/pi”目录。

尝试:

docker run -v [host_path]:[container_path]

在您的情况下 host_path/home/pi,并将 container_path 更改为容器中的日志文件目录。

卷可以解决问题。容器有它自己的文件系统。使用卷就像将包含主机文件的笔式驱动器连接到 docker 容器。

对于你的情况,你可以这样做:

sudo docker run --privileged fg -v /home/pi:/pi

现在,这将在容器的根目录中创建一个名为 pi 的文件夹,该文件夹链接到主机中的 /home/pi

因此,在您的 python 应用程序中指定 /pi 作为目录。

Relevant documentation