Dockerized spring-boot веб-сервис генерирует исключение FileNotFound - PullRequest
1 голос
/ 04 июля 2019

Я пытался скопировать файлы со своего компьютера с Windows в контейнер Docker, используя команду «Файл Docker» и читая эти файлы из веб-службы Spring.Webservice выдает файл ошибки не найден!

Здесь я пытаюсь скопировать мой локальный каталог src / nlp в директорию контейнера данных

ниже указан объем доступного докера

enter image description here

Файл Docker

FROM openjdk:8-jdk-alpine

EXPOSE 8080

ARG JAR_FILE=/target/nlp-0.0.1-SNAPSHOT.jar

ADD ${JAR_FILE} nlp-0.0.1-SNAPSHOT.jar

ADD src/nlp  /data

ENTRYPOINT ["java","-jar", "nlp-0.0.1-SNAPSHOT.jar"]`

application.properties

server.port=8080
logging.level.radial.nlp=DEBUG
logging.file = mylogfile.log
nlp.learning.dir = /data/

Java

InputStream inputStream = new FileInputStream(environment.getProperty("nlp.learning.dir")+ "/train/models/en/token/en-token.bin"); 

Ошибка

java.io.FileNotFoundException: /data/train/models/en/token/en-token.bin (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)

Ответы [ 3 ]

1 голос
/ 04 июля 2019

Обратите внимание на дополнительные косую черту на вашем пути до поезда dir /data//train/models/en/token/en-token.bin

Рассмотрите возможность изменения строки чтения на:

InputStream inputStream = new FileInputStream(environment.getProperty("nlp.learning.dir")+ "train/models/en/token/en-token.bin");

0 голосов
/ 05 июля 2019

Я изменил свою зависимость от плагина maven, теперь он работает нормально

<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.7</version>
<!-- Wire up to the default build phases -->
<executions>
  <execution>
    <id>default</id>
    <goals>
      <goal>build</goal>
      <goal>push</goal>
    </goals>
  </execution>
</executions>
<configuration>
  <repository>${project.artifactId}</repository>
  <buildArgs>
    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
  </buildArgs>
</configuration>    

0 голосов
/ 04 июля 2019

Скорее всего, у вас нет файла src/nlp/train/models/en/token/en-token.bin того же каталога, из которого вы строите свой контейнер.

parent/
├── Dockerfile
└── src/
    └── nlp/
        └── train/
            └── models/
                └── en/
                    └── token/
                        └── en-token.bin <--- does this exist?
...