首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NoSuchFileException在运行码头映像时,

NoSuchFileException在运行码头映像时,
EN

Stack Overflow用户
提问于 2021-12-06 21:48:58
回答 1查看 217关注 0票数 0

我刚接触过码头和AWS。我试图使用信任存储证书(cassandra_truststore.jks)连接AWS,我将证书保存在项目根级别。我能够通过本地执行应用程序(使用gradlew bootRun)来连接aws。但是,当我构建码头映像(使用gradlew docker)并运行映像(使用winpty docker run -it product-service-app)时,它将抛出异常"java.nio.file.NoSuchFileException“./cassandra_trustore.jks。这是我的堆栈追踪..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Caused by: java.lang.IllegalStateException: Cannot initialize SSL Context
        at com.datastax.oss.driver.internal.core.ssl.DefaultSslEngineFactory.<init>(DefaultSslEngineFactory.java:74) ~[java-driver-core-4.13.0.jar!/:na]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[na:na]
        at com.datastax.oss.driver.internal.core.util.Reflection.resolveClass(Reflection.java:329) ~[java-driver-core-4.13.0.jar!/:na]
        ... 19 common frames omitted
Caused by: java.nio.file.NoSuchFileException: ./cassandra_truststore.jks
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92) ~[na:na]
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[na:na]
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[na:na]
        at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) ~[na:na]
        at java.base/java.nio.file.Files.newByteChannel(Files.java:371) ~[na:na]
        at java.base/java.nio.file.Files.newByteChannel(Files.java:422) ~[na:na]
        at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) ~[na:na]
        at java.base/java.nio.file.Files.newInputStream(Files.java:156) ~[na:na]
        at com.datastax.oss.driver.internal.core.ssl.DefaultSslEngineFactory.buildContext(DefaultSslEngineFactory.java:119) ~[java-driver-core-4.13.0.jar!/:n
a]
        at com.datastax.oss.driver.internal.core.ssl.DefaultSslEngineFactory.<init>(DefaultSslEngineFactory.java:72) ~[java-driver-core-4.13.0.jar!/:na]
        ... 24 common frames omitted

下面是我的码头文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FROM openjdk:11
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

下面是我的gradle.build文件停靠器任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
buildscript {
    repositories {
        mavenCentral()
    }
}

plugins {
    id 'org.springframework.boot' version '2.4.4'
    id 'com.palantir.docker' version '0.30.0'
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'jacoco'
apply plugin: 'application'
apply plugin: 'io.spring.dependency-management'

group = 'com.capone.lab.product'
version = '1.0'

repositories {
    mavenCentral()
}

bootJar {
    enabled = true
    mainClassName = 'com.capone.lab.product.ProductApplication'
}

sourceCompatibility = 11
targetCompatibility = 11

docker {
    name "product-service-app"
    dockerfile file('Dockerfile')
    copySpec.from(jar).rename(".*","app.jar")
    buildArgs(['JAR_FILE': "app.jar"])
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-cassandra'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    implementation 'software.aws.mcs:aws-sigv4-auth-cassandra-java-driver-plugin:4.0.4'
    implementation 'com.datastax.oss:java-driver-core:4.13.0'
    implementation 'com.datastax.oss:java-driver-query-builder:4.13.0'
    implementation 'com.datastax.oss:java-driver-mapper-runtime:4.13.0'
    implementation 'com.datastax.oss:native-protocol:1.5.0'
    
    compileOnly 'org.projectlombok:lombok:1.18.22'
    annotationProcessor 'org.projectlombok:lombok:1.18.22'
    
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
    testImplementation 'org.mockito:mockito-core:2.1.0'
    testImplementation 'org.mockito:mockito-junit-jupiter:4.1.0'
    testImplementation 'org.mockito:mockito-core:4.1.0'
    implementation 'org.junit.platform:junit-platform-commons:1.8.1'

    compile 'org.springframework:spring-context'//:5.0.1.RELEASE'
    implementation 'org.springframework.boot:spring-boot-test-autoconfigure:1.4.0.RELEASE'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    
}

test {
    useJUnitPlatform()
}

我已经检查过我没有.dockerignore文件。

我尝试了很多方法,但没能解决这个问题。这里的任何线索对我都会有很大帮助。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-05-11 08:36:24

我相信您需要将信任库添加到您的容器中。它不能简单地被复制。尝试从docker文件中运行以下命令。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl https://www.amazontrust.com/repository/AmazonRootCA1.pem -O && \
openssl x509 -outform der -in AmazonRootCA1.pem -out temp_file.der && \
keytool -import -alias new-cassandra -keystore cassandra_truststore.jks -file temp_file.der -storepass amazon -noprompt

参考见。driver.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70255473

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文