Python / Docker: Как использовать модуль регистрации Python с Docker? - PullRequest
2 голосов
/ 14 марта 2019

У меня есть простая установка с модулем журналирования 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" (это приложение будет работать на Raspberry Pi на случай, если кому-то интересно), сейчас я пытаюсь контейнировать приложение с помощью Docker.

После сборки и запуска моего контейнера я получаю сообщение об ошибке:

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

Теперь я знаю, что у docker есть собственная файловая система в контейнере, отдельная от файловой системы хоста (pi), но я хочу сказать docker, чтобы мое приложение python нормально регистрировалось на хосте. абсолютный путь /home/pi/. Как мне этого добиться?

Я читал некоторые другие темы, в которых упоминались тома, но я не очень хорошо их понимаю.

Я использую эту команду для запуска моего контейнера:

sudo docker run --privileged fg

Флаг --privileged таков, что я могу получить доступ к файлу / dev / mem на pi для операций GPIO.

Обновление: обратите внимание, что я хочу, чтобы мой докер-контейнер создавал файл журнала по пути хоста "/ home / pi" , я не хочу создавать "/ home / pi" каталог внутри самого контейнера.

Ответы [ 2 ]

3 голосов
/ 14 марта 2019

попробовать:

docker run -v [host_path]:[container_path]

В вашем случае host_path - это /home/pi, и замените container_path на dir файла журнала в вашем контейнере.

1 голос
/ 14 марта 2019

Объемы могут решить проблему.Контейнер имеет свою собственную файловую систему.Использование томов похоже на подключение флешки, на которой есть файлы с вашего хоста, в док-контейнер.

В вашем случае вы можете сделать это:

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

Теперь это создаст папкув корне вашего контейнера с именем pi, который связан с /home/pi на вашем хосте.

Таким образом, в вашем приложении на Python укажите /pi в качестве каталога.

Соответствующая документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...