Я запускаю приложение python
как контейнер docker
, а в своем приложении python
я использую класс pythons logging
для записи шагов выполнения с использованием logger.info
, logger.debug
и logger.error
.Проблема заключается в том, что файл журнала сохраняется только в контейнере docker
, и если контейнер исчезает, файл журнала также теряется, а также каждый раз, когда мне приходится просматривать файл журнала, мне приходится вручную копировать журнал контейнера.файл в локальную систему. Что я хочу сделать, так это то, что какой бы журнал не записывался в файл журнала контейнера, он должен быть постоянным в локальной системе - поэтому пишите в файл журнала локальной системы или автоматически монтируйте файл журнала докера в локальную систему.
Несколько вещей о моей хост-машине:
- Я запускаю несколько док-контейнеров на машине.
Мой пример файла ядра докера:
FROM server-base-v1
ADD . /app
WORKDIR /app
ENV PATH /app:$PATH
CMD ["python","-u","app.py"]
Мой пример базового файла docker:
FROM python:3
ADD ./setup /app/setup
WORKDIR /app
RUN pip install -r setup/requirements.txt
Пример моего файла docker-compose.yml:
`
version: "2"
networks:
server-net:
services:
mongo:
container_name: mongodb
image: mongodb
hostname: mongodb
networks:
- server-net
volumes:
- /dockerdata/mongodb:/data/db
ports:
- "27017:27017"
- "28017:28017"
server-core-v1:
container_name: server-core-v1
image: server-core-v1:latest
depends_on:
- mongo
networks:
- server-net
ports:
- "8000:8000"
volumes:
- /etc/localtime:/etc/localtime:ro
`
Пример выше файла yml является лишь частью моего настоящего файла yml.У меня есть несколько server-core-v1
контейнеров (с разными именами), работающих параллельно, каждый из которых имеет свой собственный файл журнала.
Я также был бы признателен, если бы существовали более удачные стратегии ведения журнала в python с помощью docker и обеспечения его постоянства.Я прочитал несколько статей, в которых упоминалось использование sys.stderr.write()
и sys.stdout.write()
, но не уверен, как это использовать, особенно при работе нескольких контейнеров и ведении журнала.