如何在 docker 文件中使用 python 文件路径并将 python 程序的日志写入 ubuntu 上的 /var/log 文件?

How to use python file path inside docker file and write python program's logs to /var/log file on ubuntu?

我是 docker 新手。我的 docker 文件内容:

WORKDIR /home/uadmin/queuemgr/mongo_db_cache
COPY . /home/uadmin/queuemgr/mongo_db_cache

#CMD ["pwd"]
#CMD ["ls"]

ENTRYPOINT ["/usr/bin/python3"]
CMD ["/home/uadmin/queuemgr/mongo_db_cache/publisher.py"]

用于运行 docker图像的命令是(保持我运行ning所在的路径):

uadmin@br0ubmsmqtest:~/msw/queuemgr/mongo_db_cache/docker_inputs$ sudo docker build -t queuepublisher:latest . -f publisher_docker_file

用于 运行 docker 容器的命令是(保持我所在 运行ning 的路径):

uadmin@br0ubmsmqtest:~/msw/queuemgr/mongo_db_cache/docker_inputs$ sudo docker container run -v /var/log:/log --rm --name publisher queuepublisher

尽管 CMD ["pwd"] 打印“/home/uadmin/msw/queuemgr/mongo_db_cache”作为当前目录,命令 CMD ["ls"] 列出来自 /msw/queuemgr/mongo_db_cache/docker_inputs 而不是来自 /home/uadmin/queuemgr/mongo_db_cache 的文件。因此,最后一行 CMD ["/home/uadmin/queuemgr/mongo_db_cache/publisher.py"] 导致错误:

/usr/bin/python3: 无法打开文件 '/home/uadmin/queuemgr/mongo_db_cache/publisher.py': [Errno 2] 没有那个文件或目录

我正在使用 python 日志模块在 /va/log/ 文件夹形式 publisher.py 中创建日志文件。这是 publisher.py:

的代码片段
import logging
logging.basicConfig(filename='/var/log/example.log', level=logging.DEBUG)

logging.info('This is publisher.py')

当我 运行 它使用 docker 时,它应该将日志消息从 publisher.py 写入 /var/log/ 文件夹。所以只有我在 运行ning docker 容器时发送“-v /var/log:/log”。

但它根本没有使用 docker 容器在 /var/log 文件夹下创建日志文件。

我学到了一些我们可以通过多卷的方法。下面的命令对我来说很神奇:

sudo docker container run -v /home/uadmin/msw/queuemgr:/queuemgr -v /var/log:/var/log --rm --name publisher queuepublisher

我可以 运行 容器 publisher.py 成功。同时从publsher.py登录到/var/log文件夹成功!