#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
.