2
votes

Le service Web Dockerized Spring-Boot lève une exception FileNotFound

J'ai essayé de copier des fichiers de ma machine Windows vers le conteneur Docker à l'aide de la commande de fichier Docker et de lire ces fichiers à partir du service Web Spring. Webservice lance un fichier d'erreur introuvable!

Ici, j'essaye de copier mon répertoire local src / nlp vers / data container directoty

ci-dessous se trouve le volume de docker disponible

 entrez la description de l'image ici

Fichier Docker

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)

application.properties

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

Java

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

Erreur

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"]`


0 commentaires

3 Réponses :


1
votes

Veuillez noter une barre oblique supplémentaire dans votre chemin avant le répertoire train /data//train/models/en/token/en-token.bin

Pensez à changer la ligne de lecture en:

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


3 commentaires

J'ai modifié l'erreur maintenant, c'était une faute de frappe désolé pour cela .. pouvez-vous vérifier à nouveau maintenant? ce n'est pas lié à une barre oblique supplémentaire je crois


essayez d'ajouter RUN ls / data / train / models / en / token ou RUN cat /data/train/models/en/token/en-token.bin à votre Dockerfile après avoir ajouté des ressources. Quelle est la sortie lorsque vous créez une image?


Il doit contenir le nom du fichier / le contenu du fichier



0
votes

Vous n'avez probablement pas de fichier src / nlp / train / models / en / token / en-token.bin du même répertoire que celui à partir duquel vous construisez votre conteneur.

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


0 commentaires

1
votes

J'ai modifié ma dépendance au plugin maven, maintenant cela fonctionne correctement

<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 commentaires