Я хочу записывать файлы журнала в файловую систему хоста, чтобы они сохранялись, даже если контейнер Docker умирает.
Нужно ли монтировать том в моем Docker yaml?
VOLUME /var/log/myApp
Тогда я просто ссылаюсь на крепление вот так?
var stream = fs.createWriteStream(`/var/log/myApp/myLog.log`);
stream.write('Hello World!');
Затем за пределами моего контейнера я могу перейти в каталог /var/log/myApp/ и просмотреть свои журналы.
Я пытаюсь найти пример этого, но ничего не видел.





Когда вы настраиваете свой контейнер, вы просто используете аргумент -v:
-v ./path/to/local/directory:/var/log/myApp
Первый путь — это место, где том доступен в хост-системе (точка в начале означает, что это относительно того места, где вы запускаете команду docker). Путь с правой стороны находится там, где он доступен в контейнере.
Еще раз, в docker-compose:
volumes:
- "./path/to/local/directory:/var/log/myApp"
И да, это позволит данным, хранящимся в томе, быть постоянными.
Спасибо, я попробую это, и я вернусь и отмечу это как ответ.
Этот ответ полезен. Мне также нужно было добавить это в Dockerfile: RUN mkdir /var/log/myApp
+1 Вы также можете получить другое поведение при сбое, если хотите, с помощью -v vs --mount (взаимоисключающие параметры).
-vсоздаст указанную папку, если она не существует, на хосте Docker, а--mountприведет к сбою команды Docker, если том не существует на хосте Docker больше информации в документах Dockers.