Изображение Docker не может добавить мой ключ учетных данных JSON в мой клиент службы Google Cloud Natural Language - PullRequest
0 голосов
/ 07 апреля 2019

Я создал приложение 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

Затем в наборе инструментов Docker я запускаю: 1.mvn clean install 2.mvn clean package-Dbuild = docker

Я получаю сообщение об ошибке: enter image description here

На 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, если в папке ресурсов содержится более одного ключа.

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Вам нужно будет сделать AvayaNlp-e422dbca92e5.json доступным в том месте, где ваш JAR ожидает его найти при запуске этого образа.

Я недостаточно знаком с docker-maven-plugin, чтобы предоставить вам точную информациюруководство, но, если AvayaNlp-e422dbca92e5.json находится в ${PWD}/secrets и вы хотите смонтировать его в /secrets/ в вашем образе контейнера, команда docker run примет форму:

docker run ... --volume=${PWD}/secrets:/secrets ... [[your-image]]

Как вы работаетеконтейнер для генерации ошибки?

Maven запускает образ вашего контейнера после его создания?

HTH!

0 голосов
/ 07 апреля 2019

В Dockerfile добавьте файл json в соответствующее место. Используйте команду ADD dockerfile.

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