чтение / запись в один и тот же файл из нескольких док-контейнеров - PullRequest
2 голосов
/ 01 июня 2019

У меня есть 4 контейнера (приложение Java) в 4 хостах докера.им нужно читать / писать в один и тот же файл.

блокировка файла не может быть использована из-за разных ОС.

Итак, я попытался создать файл .lock, если один из 4 контейнеровсоздал файл .lock, остальные контейнеры должны будут ждать.Но это все еще не работает хорошо.Другие контейнеры не могут видеть файл .lock, созданный другими контейнерами иногда (не в режиме реального времени).

Есть ли другие решения?

1 Ответ

2 голосов
/ 01 июня 2019

Я предлагаю вам пересмотреть свои предположения:

  • Что если у вас не 4, а 400 контейнеров?
  • Что если они находятся на серверах, не разделяющих файловую систему?

Чистый способ сделать это - написать очень простой сервер (если загрузка позволяет это сделать, это может быть nginx + PHP и сделать это за 10 минут), который выполняет запись файла, запустите его в другом контейнере.и подключиться к нему из других контейнеров.Это даст вам:

  • блокировка файла, простая и надежная, так как файл виден только одним сервером
  • масштабируемость
  • кластеризация
  • абстракция
...