admin管理员组文章数量:1405748
I'm making a Java application which will connect to a Firestore db on GCP to do some data read and write, it all worked well if I build and run with mvn, but when I build it into a Docker container, instantiating the Firestore instance will throw error
java.lang.IllegalArgumentException: Address types of NameResolver 'unix' for 'firestore.googleapis:443' not supported by transport
This is how my code looks like
String serviceAccountPath = "path to a json";
Credentials credentials;
try (FileInputStream serviceAccountStream = new FileInputStream(serviceAccountPath)) {
credentials = GoogleCredentials.fromStream(serviceAccountStream);
}
firestore = FirestoreOptions.newBuilder()
.setProjectId("project id")
.setDatabaseId("my db name")
.setCredentials(credentials)
.setTransportOptions(
FirestoreOptions.getDefaultTransportOptionsBuilder().build()
)
.build()
.getService();
This is my Dockerfile
FROM maven:3.8.4-jdk-11
# Set the working directory to /
WORKDIR /
# Copy the Java source code into the container
COPY . /
ENV GRPC_DNS_RESOLVER="dns"
ENV GRPC_DEFAULT_SSL_PROVIDER="netty"
ENV GRPC_DEFAULT_TRANSPORT="netty"
RUN mvn compile
RUN mvn package compile
# Expose the gRPC port
EXPOSE 50051
EXPOSE 443
# Run the gRPC service when the container starts
CMD ["java","-Dio.grpcty.shaded.ioty.transport.noNative=false", "-jar", "target/Backend-1.0-SNAPSHOT-jar-with-dependencies.jar"]
Again, this all worked if I run it on my Mac with mvn, but it is just not working with Docker.
I'm making a Java application which will connect to a Firestore db on GCP to do some data read and write, it all worked well if I build and run with mvn, but when I build it into a Docker container, instantiating the Firestore instance will throw error
java.lang.IllegalArgumentException: Address types of NameResolver 'unix' for 'firestore.googleapis:443' not supported by transport
This is how my code looks like
String serviceAccountPath = "path to a json";
Credentials credentials;
try (FileInputStream serviceAccountStream = new FileInputStream(serviceAccountPath)) {
credentials = GoogleCredentials.fromStream(serviceAccountStream);
}
firestore = FirestoreOptions.newBuilder()
.setProjectId("project id")
.setDatabaseId("my db name")
.setCredentials(credentials)
.setTransportOptions(
FirestoreOptions.getDefaultTransportOptionsBuilder().build()
)
.build()
.getService();
This is my Dockerfile
FROM maven:3.8.4-jdk-11
# Set the working directory to /
WORKDIR /
# Copy the Java source code into the container
COPY . /
ENV GRPC_DNS_RESOLVER="dns"
ENV GRPC_DEFAULT_SSL_PROVIDER="netty"
ENV GRPC_DEFAULT_TRANSPORT="netty"
RUN mvn compile
RUN mvn package compile
# Expose the gRPC port
EXPOSE 50051
EXPOSE 443
# Run the gRPC service when the container starts
CMD ["java","-Dio.grpcty.shaded.ioty.transport.noNative=false", "-jar", "target/Backend-1.0-SNAPSHOT-jar-with-dependencies.jar"]
Again, this all worked if I run it on my Mac with mvn, but it is just not working with Docker.
Share Improve this question edited Mar 7 at 20:53 Doug Stevenson 319k36 gold badges456 silver badges473 bronze badges Recognized by Google Cloud Collective asked Mar 7 at 20:50 YT.LuYT.Lu 317 bronze badges1 Answer
Reset to default 0It turns out I didn't use the correct CMD to start the server, replaced with
CMD ["mvn", "exec:java", "-Dexec.mainClass={mymainclass}"]
then it just worked the same way as localhost.
本文标签: javaFirestore has trouble initialize db in DockerStack Overflow
版权声明:本文标题:java - Firestore has trouble initialize db in Docker - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744910052a2631858.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论