мульти проект с докером докер - PullRequest
0 голосов
/ 15 октября 2019

Структура моего проекта, где модуль-сервис должен быть образом докера при сборке:

my-project
 - .aws
    - credentials.json
 - module-api
   - build.gradle
 - module-service (depends on module-api)
   - build.gradle
- build.gradle
- entrypoint.sh
- Dockerfile
- gradlew

Оттуда https://spring.io/guides/gs/spring-boot-docker/#scratch

Я включаю это в свой my-project /build.gradle

buildscript {
    ...
    dependencies {
        ...
        classpath('gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.13.0')
    }
}

Я включаю это в my-project / module-service / build.gradle

apply plugin: 'com.palantir.docker'

task unpack(type: Copy) {
    dependsOn bootJar
    from(zipTree(tasks.bootJar.outputs.files.singleFile))
    into("build/dependency")
}

docker {
    name "${project.group}/${bootJar.baseName}"
    copySpec.from(tasks.unpack.outputs).into("dependency")
    buildArgs(['DEPENDENCY': "dependency"])
}

Мой Dokerfile

FROM openjdk:12-jdk

ARG JAR_FILE
ARG CREDENTIALS
ARG ACTIVE_PROFILES=dev
ENV AWS_APPLICATION_CREDENTIALS=/app/credentials.json
ENV ACTIVE_PROFILES=$ACTIVE_PROFILES

WORKDIR /app

EXPOSE 8080

COPY .aws/credentials.json credentials.json
COPY planning-service/entrypoint.sh .
ADD target/${JAR_FILE} app.jar

ENTRYPOINT ["./entrypoint.sh" ]

Затем запустите

./gradlew build docker

Тогда я получил исключение, что

module-service/build/docker/Dockerfile : no such file or directory

Если я перевожу Dockerfile в module-service / Dockerfile и

./gradlew build docker

Я получил:

/ var / lib / docker / tmp / docker-builder881644269 / .aws / credentials.json: нет такого файла или каталога

Если я установил (добавив дополнительную точку ..):

COPY ../.aws/credentials.json credentials.json

, то

COPY не удалась: запрещенный путь вне контекста сборки: ../.aws/credentials.json ()

Если я переместлю папку .aws в module-service, чтобы

 my-project        
     - module-api
       - build.gradle
     - module-service (depends on module-api)
       - .aws
           - credentials.json
       - Dockerfile
       - entrypoint.sh
       - build.gradle
    - build.gradle
    - gradlew

Затем на

./gradlew build docker

Я получил:

Копирование не удалось: stat /var/lib/docker/tmp/docker-builder169695592/.aws/credentials.json: нет такого файла или каталога

Вопрос: Каково было бы решение заставить сборщик сборок создать образ модуля-сервиса, который был бы разрешен с помощью свойстваaws / credentials.json и ./entrypoint.s в файле Docker?

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