У нас есть основное приложение. NET, которое записывает свои выходные данные в файлы, например. portal-20200430-000.log
. В среде DEV все хорошо:)
Приложение разворачивается через службу docker, которая инициализирует 3 реплики - 3 docker контейнера. Мы хотим, чтобы все журналы из всех контейнеров (реплик) находились в одном месте, поэтому мы сопоставили файловые системы между хост-машиной и контейнерами через тома .
docker -compose.yml:
version: "3.7"
services:
web:
image: portal:0.0.1
--- snipped content ---
volumes:
- "/home/portal/Dev/Logs:/app/Logs"
deploy:
replicas: 3
Каждый контейнер (реплика) выводит свои собственные журналы в /app/Logs/portal-20200430-000.log
внутри контейнера, но эта папка сопоставляется с /home/portal/Dev/Logs
в гостья. Таким образом, все 3 контейнера записывают в один файл на хосте, что не очень хорошо - некоторые журналы теряются, эти 3 контейнера перезаписывают журналы друг друга и т. Д. c.
Я полагаю, возможные решения являются:
- изменить имя файла журнала каждого контейнера (но ведение журнала осуществляется с помощью внешнего Карамболо logger , который имеет имена файлов, жестко закодированные в настройках приложения. json. Эти настройки являются общими ко всем репликам контейнера)
- дать указание каждой реплике docker сопоставить другой том - возможно ли это?
Есть ли другое решение?