Java 应用程序按预期工作,但当我使用Docker对应用程序进行上下文化时,它无法访问Cassandra容器

Java 应用程序按预期工作,但当我使用Docker对应用程序进行上下文化时,它无法访问Cassandra容器,java,spring,docker,cassandra,docker-compose,Java,Spring,Docker,Cassandra,Docker Compose,我的申请有问题。在我和Docker合作开发应用程序之前,一切都很好 我有一个Docker容器,其中包含Cassandra实例Docker run-p9042:9042——名称Cassandra Cassandra:latest *当我在IntelliJ中运行我的应用程序或通过cmdjava-jar myjar.jar运行时,它工作得很好。问题发生在 我试图使用Docker或Docker compose启动应用程序Docker run-p8080:8080——命名api{image here}或D

我的申请有问题。在我和Docker合作开发应用程序之前,一切都很好

  • 我有一个Docker容器,其中包含Cassandra实例
    Docker run-p9042:9042——名称Cassandra Cassandra:latest
  • *当我在IntelliJ中运行我的应用程序或通过cmd
    java-jar myjar.jar
    运行时,它工作得很好。问题发生在 我试图使用Docker或Docker compose启动应用程序
    Docker run-p8080:8080——命名api{image here}
    Docker compose up

    Docker文件:

    FROM openjdk:8
    COPY . /target/myjar.jar 
    EXPOSE 8080
    ENTRYPOINT ["java","-jar","target/myjar.jar"]
    
    Docker Compose

    version: '3'
    services:
      app:
        build: ./app
          ports:
          - "8080:8080"
          depends-on:
          -cassandra
      cassandra:
        container_name 'cassandra'
        image: cassandra
        ports:
        - "9042:9042"
    
    我试图解决的问题:

    FROM openjdk:8
    COPY . /target/myjar.jar 
    EXPOSE 8080
    ENTRYPOINT ["java","-jar","target/myjar.jar"]
    
    • 更改应用程序端口
    • 构建docker和docker以不同的方式组成文件
    应用程序属性

    spring.data.cassandra.keyspace-name=message
    spring.data.cassandra.schema-action=create_if_not_exists
    spring.data.cassandra.contact-points=127.0.0.1
    spring.data.cassandra.port=9042
    
    尝试从图像(片段)运行容器时出错。

    **正确运行
    java-jar
    **

    2020-06-13 13:35:19.461  INFO 12088 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Reactive Cassandra repositories in DEFAULT mode.
    2020-06-13 13:35:19.593  INFO 12088 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 116ms. Found 0 Reactive Cassandra repository interfaces.
    2020-06-13 13:35:19.609  INFO 12088 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Cassandra repositories in DEFAULT mode.
    2020-06-13 13:35:19.630  INFO 12088 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 23ms. Found 1 Cassandra repository interfaces.
    2020-06-13 13:35:21.111  INFO 12088 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2020-06-13 13:35:21.134  INFO 12088 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2020-06-13 13:35:21.134  INFO 12088 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.35]
    2020-06-13 13:35:21.296  INFO 12088 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2020-06-13 13:35:21.296  INFO 12088 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3376 ms
    2020-06-13 13:35:21.945  INFO 12088 --- [           main] c.d.o.d.i.core.DefaultMavenCoordinates   : DataStax Java driver for Apache Cassandra(R) (com.datastax.oss:java-driver-core) version 4.6.1
    2020-06-13 13:35:22.985  INFO 12088 --- [     s0-admin-0] c.d.oss.driver.internal.core.time.Clock  : Using native clock for microsecond precision
    2020-06-13 13:35:22.985  INFO 12088 --- [     s0-admin-0] c.d.o.d.i.core.metadata.MetadataManager  : [s0] No contact points provided, defaulting to /127.0.0.1:9042
    2020-06-13 13:35:23.961  INFO 12088 --- [        s0-io-0] c.d.o.d.i.core.channel.ChannelFactory    : [s0] Failed to connect with protocol DSE_V2, retrying with DSE_V1
    2020-06-13 13:35:23.979  INFO 12088 --- [        s0-io-1] c.d.o.d.i.core.channel.ChannelFactory    : [s0] Failed to connect with protocol DSE_V1, retrying with V4
    2020-06-13 13:35:24.387  INFO 12088 --- [        s0-io-2] c.d.oss.driver.api.core.uuid.Uuids       : PID obtained through native call to getpid(): 12088
    2020-06-13 13:35:26.186  INFO 12088 --- [     s1-admin-0] c.d.oss.driver.internal.core.time.Clock  : Using native clock for microsecond precision
    2020-06-13 13:35:26.186  INFO 12088 --- [     s1-admin-0] c.d.o.d.i.core.metadata.MetadataManager  : [s1] No contact points provided, defaulting to /127.0.0.1:9042
    2020-06-13 13:35:26.214  INFO 12088 --- [        s1-io-0] c.d.o.d.i.core.channel.ChannelFactory    : [s1] Failed to connect with protocol DSE_V2, retrying with DSE_V1
    2020-06-13 13:35:26.231  INFO 12088 --- [        s1-io-1] c.d.o.d.i.core.channel.ChannelFactory    : [s1] Failed to connect with protocol DSE_V1, retrying with V4
    2020-06-13 13:35:30.078  INFO 12088 --- [     s2-admin-0] c.d.oss.driver.internal.core.time.Clock  : Using native clock for microsecond precision
    2020-06-13 13:35:31.698  INFO 12088 --- [     s2-admin-0] c.d.o.d.i.core.metadata.MetadataManager  : [s2] No contact points provided, defaulting to /127.0.0.1:9042
    2020-06-13 13:35:31.720  INFO 12088 --- [        s2-io-0] c.d.o.d.i.core.channel.ChannelFactory    : [s2] Failed to connect with protocol DSE_V2, retrying with DSE_V1
    2020-06-13 13:35:31.732  INFO 12088 --- [        s2-io-1] c.d.o.d.i.core.channel.ChannelFactory    : [s2] Failed to connect with protocol DSE_V1, retrying with V4
    2020-06-13 13:35:32.618  INFO 12088 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2020-06-13 13:35:32.943  INFO 12088 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2020-06-13 13:35:32.946  INFO 12088 --- [           main] com.mycompany.asrecruitment.app          : Started app in 16.206 seconds (JVM running for 17.064)
    

    您得到的错误是什么。openjdk版本是什么?版本字段为空是否是一个输入错误?连接到cassandra(特别是主机名)的连接属性是什么?哦,这是我在创建此帖子时犯的一个输入错误。java版本是8。我在下面发布了连接道具和错误消息。除非您创建一个桥接网络,否则两个容器不能相互访问。您得到的错误是什么。openjdk版本是什么?版本字段为空是否是一个输入错误?连接到cassandra(特别是主机名)的连接属性是什么?哦,这是我在创建此帖子时犯的一个输入错误。java版本是8。我在下面发布了连接道具和错误消息。除非创建网桥网络,否则两个容器不能相互访问