Я написал сборочную задачу buildDocker в моем файле build.gradle следующим образом:
task buildDocker(type: Docker, dependsOn: copyJar) {
push = false
baseImage "openjdk:8u151"
println System.getenv('AWS_ACCESS_KEY_ID')
println System.getenv('AWS_SECRET_ACCESS_KEY')
setEnvironment('AWS_ACCESS_KEY_ID',System.getenv('AWS_ACCESS_KEY_ID'))
setEnvironment('AWS_SECRET_ACCESS_KEY',System.getenv('AWS_SECRET_ACCESS_KEY'))
runCommand("mkdir myProject")
addFile("myProject-0.0.jar","myProject/")
workingDir("/myProject")
runCommand("unzip -q myProject-0.0.jar")
exposePort(8888)
entryPoint(["java","-XX:+UnlockExperimentalVMOptions","-
XX:+UseCGroupMemoryLimitForHeap","-XX:MaxRAMFraction=1","-XshowSettings:vm","-cp",
"/myProject-config:.","org.springframework.boot.loader.JarLauncher"])
}
Когда я строю образ, выполняя задачу, я вижу выходные данные println в терминале. Но когда я запускаю образ, я получаю следующее исключение:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'simpleMessageListenerContainer' defined in class path resource [org/springframework/cloud/aws/messaging/config/annotation/SqsConfiguration.class]: Invocation of init method failed; nested exception is com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [com.amazonaws.auth.profile.ProfileCredentialsProvider@46244e65: profile file cannot be null]
Caused by: com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [com.amazonaws.auth.profile.ProfileCredentialsProvider@46244e65: profile file cannot be null]
Я также пытался установить переменные среды непосредственно в операторе run, используя параметры -e в команде run ипримонтировав мой файл ~ / .aws / credentials в контейнер докера, но с этим также я получаю то же исключение.
EDIT1: вот команда запуска docker с использованием флагов -e:
docker run -e AWS_ACCESS_KEY_ID=XXXX -e AWS_SECRET_ACCESS_KEY=XXXX --link mysql --name myapp <imageName>
Кроме того, поместите учетные данные в виде пар ключ-значение в файл-env.list и попробуйте это:
docker run --env-file env.list -v --link mysql --name myapp <imagename>