Я создал приложение Spring Boot Java в Eclipse, которое подключается к сервису Google Cloud Natural Language для анализа текста.Я создал его образ Docker, и он не запускается, но он работает в Eclipse для меня.
Я читаю в своем ключе JSON вот так:
InputStream inputStream = GoogleNlpApplication.class.getClassLoader().getSystemResourceAsStream("AvayaNlp-e422dbca92e5.json");
credentialsProvider = FixedCredentialsProvider.create(ServiceAccountCredentials.fromStream(inputStream));
Мой pom-файл для spotifyПлагин Docker:
<profiles>
<profile>
<id>docker-build</id>
<activation>
<property>
<name>build</name>
<value>docker</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>googlenlp2vi</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!-- copy the service's jar file from target into the root directory
of the image -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<executions>
<execution>
<id>default</id>
<!-- phase>install</phase -->
<phase>package</phase>
<goals>
<goal>build</goal>
<!-- goal>push</goal -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>googlenlp2vi</finalName>
</build>
</profile>
</profiles>
Каталог приложения: ![Directory](https://i.stack.imgur.com/nBudU.png)
Затем в наборе инструментов Docker я запускаю: 1.mvn clean install 2.mvn clean package-Dbuild = docker
Я получаю сообщение об ошибке: ![enter image description here](https://i.stack.imgur.com/NzdUp.png)
На Eclipse он работает нормально, образ докера не использует импорт файла java?
Обновление Решение:
Я закончил создание нового каталога в ресурсах:
src
|
main
|
resources
|
test
|
AvayaNlp-e422dbca92e5.json
Затем использовал:
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("classpath*:test/*.json");
InputStream inputStream = null;
for (Resource r : resources) {
inputStream = r.getInputStream();
}
credentialsProvider = FixedCredentialsProvider.create(ServiceAccountCredentials.fromStream(inputStream));
И теперь образ докератеперь он может получить доступ к ключу json в банке, хотя он будет захватывать все файлы JSON, если в папке ресурсов содержится более одного ключа.