如何在 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文件夹成功!
我是 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文件夹成功!