@dm-kotlyar

Как в Docker Compose организовать шаринг файлов между контейнерами?

Появилась такая академическая задача, на которую никак не могу найти решение. Имеются 2 приложения написанные на Java (2 jar архива). Одна jar'ка вызывает внутри себя методы из другой jar'ки. Требуется записать их в разные Docker контейнеры и запустить через Docker-compose.

Теперь непосредственно вопрос: как это можно запустить на докерах с помощью Docker-compose? Пробовал по-разному прописывать volume, пока ничего не помогло. В идеале нужно, чтобы файлы передавались внутри докера минуя хост-машину. Но как вариант можно сделать общую папку на хосте.
По второму варианту получилось только сделать папку и руками скинуть туда 2 JAR-файла, но тогда и потребность во втором контейнере отпадает. А вот сделать так, чтобы контейнеры сами скидывали туда свои JAR-файлы при запуске командой docker-compose up, а потом запускались - не получилось.

Подскажите, как такое можно сделать? Какие будут другие варианты решения задачи?
  • Вопрос задан
  • 2026 просмотров
Решения вопроса 2
@dm-kotlyar Автор вопроса
Сформулировал для себя решение. Публикую, мало ли кому-то ещё пригодится и себе на память.

Структура проекта следующая:
Main.jar
lib:
 - Name.jar


При этом я создал отдельный контейнер с Java, а файлы поместил в контейнер без Java на базе Ubuntu. Может быть, выбор в качестве файлового контейнера - Ubuntu не самый правильный, но мне так было проще проверить.

docker-compose.yml
version: '2'
services:
  java:
    image: 'private/java'
    volumes_from:
      - 'app_main'
      - 'name_class'
    command: 'java -jar /usr/local/app/Main2.jar'
  app_main:
    image: 'private/app1_main'
  name_class:
    image: 'private/app1_name'


DockerfileMain
FROM ubuntu:latest
ENV app /usr/local/app
RUN mkdir ${app}
COPY ./prj/Main2.jar ${app}
VOLUME ${app}
WORKDIR ${app}
CMD /bin/true


DockerfileName
FROM ubuntu:latest
ENV app /usr/local/app/lib
RUN mkdir -p ${app}
COPY ./prj/lib/Name.jar ${app}
VOLUME ${app}
WORKDIR ${app}
CMD /bin/true
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы