Получи случайную криптовалюту за регистрацию!

Скандалы, интриги, расследования... На Debian 11 столкнулся с | Записки молодого девопсера

Скандалы, интриги, расследования...
На Debian 11 столкнулся с очень интересной ситуацией.
На хосте установлен Docker. Также имеется конфигурация docker-compose для запуска nginx.
В манифесте указаны сертификаты и файлы конфигурации с использованием bind mount
(это когда вы перед символом двоеточия указываете путь на хостовой системе, а после двоеточия -
путь внутри контейнера). Затем вы пытаетесь протестировать конфигурацию, правите файл
на хосте, в контейнере - вводите nginx -t && nginx -s reload. И ваши изменения не подтягиваются.
И дело не в nginx, ведь сам файл конфигурации в контейнере не изменился.
Исторически сложилось так, что на серверах я использую vim в качестве основного текстового редактора.
И внезапно оказалось, что после правки файла через vim, этот же файл не обновляется в контейнере.
А после правки через nano - обновляется.
Оказалось, что все дело было в директиве backupcopy
(http://vimdoc.sourceforge.net/htmldoc/options.html#'backupcopy') редактора vim, которая
после сохранения файла создавала новый и меняла номер индексного дескриптора (inode), что логично с точки зрения файловой системы.
Но вот вся логика работы bind mount как раз строится на том, чтобы файл на хосте и контейнере имел
одинаковый inode. И nano не менял inode (сохранял изменения в уже созданный файл), а vim менял.
Данная проблема решается установкой параметра set backupcopy=yes в ваш личный файл конфигурации vim, который называется .vimrc.