Структура моего проекта, где модуль-сервис должен быть образом докера при сборке:
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?