Загрузка файла контейнером Docker - PullRequest
0 голосов
/ 02 мая 2018

У меня есть приложение весенней загрузки. Контейнер Docker не имеет разрешения на создание файла.

файл докера:

FROM openjdk:8-jdk-alpine

VOLUME /tmp

ADD /build/libs/file-upload-service-2.0.0.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

Команда построения изображения:

docker build -t file-upload-service .

Команда запуска изображения:

docker run -d --name file-upload-service -p 9104:9104 file-upload-service:latest

Папка Permissions:

sudo chown -R  root:docker  /home/storage/

sudo chmod -R 777 /home/storage/

При работе с java -jar приложение может создать файл.

1 Ответ

0 голосов
/ 02 мая 2018

Задача

Вы ожидаете, что ваш код в Docker-контейнере найдет файл в файловой системе вашего хоста. Docker-контейнер полностью содержит (как следует из названия) среду выполнения, которая имеет собственную файловую систему, сеть и т. Д. Вы не можете напрямую обращаться к файловой системе хоста из вашего Docker-контейнера , если у вас нет необходимых конфигураций (монтирование) в Ваша команда docker run .. или файл композиции.

Решение

Вам нужно будет смонтировать том /home/storage внутри контейнера докера для чтения / записи из / в это место внутри контейнера. Для этого после изменения разрешений файловой системы на вашем хосте (который у вас уже есть) используйте следующую команду run для запуска контейнера:

docker run -d --name file-upload-service -v /home/storage:/home/storage -p 9104:9104 file-upload-service:latest
Флаг

-v в приведенной выше команде указывает докеру монтировать каталог /home/storage хост-машины (левая сторона :) в каталог /home/storage контейнера (правая сторона :) , Вы можете изменить эти каталоги согласно вашему удобству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...