Средство настройки заполнения и управления версиями именованного тома, используемого в качестве постоянного хранилища с balena.io

#docker #docker-compose #balena

#средство настройки #docker-compose #balena

Вопрос:

У меня есть коллекция двоичных файлов, которые должны совместно использоваться 2 службами, указанными в docker-compose. Мне нужно, чтобы данные сохранялись в ОС хоста, но мне также нужно время от времени обновлять их новой версией. Используя именованные тома, я могу добиться этого с помощью:

 volumes:
  data:
    
services:
  myapp:
    image: myimage:latest
    volumes:
      - "data:/opt/data"
    
  anotherapp:
    image: anotherapp:latest
    volumes:
        - "data:/opt/data"
  

Я хочу добавить свои двоичные двоичные объекты в отдельный контейнер, который можно версифицировать и извлекать из концентратора, а затем файлы помещаются внутри data тома. Я рассматривал возможность использования scratch образа docker или alpine, но контейнер scratch не может быть запущен с помощью docker-compose, как ожидалось.

Как я могу достичь этой конфигурации и должен ли я даже использовать так называемые контейнеры только для данных, которые не рекомендуются? Возможно, myapp само должно загрузить эти двоичные файлы и поместить их в постоянное хранилище, в этом случае мне пришлось бы реализовать свою собственную логику управления версиями / обновления.

Это приложение работает на balena.io и я использую docker volume API и balena docs в качестве ссылки: https://www.balena.io/docs/learn/develop/multicontainer/#named-volumes

Комментарии:

1. Можете ли вы включить файлы в два изображения? Достаточно ли похожи два изображения, чтобы вы могли создать один базовый образ с языковой средой выполнения и файлами, а затем создать два образа приложений из этой базы? Это позволило бы избежать большинства сложностей совместного использования файлов, а если это общий базовый образ, не требует больше места на диске.

2. @DavidMaze спасибо за комментарий! Действительно, я мог бы включить файлы в сами изображения, но, к сожалению, изображения недостаточно похожи для объединения, они работают на разных языках программирования и в разных средах. Я рассматриваю вариант создания изображения только с файлами, например, с alpine, а затем выполнение COPY --from .