我的docker映像可以与在没有网络配置的同一台机器上运行的数据库连接吗?

问题描述 投票:0回答:2

我已经创建了Web应用程序的docker图像。我的笔记本电脑上正在运行cassandra数据库,并且正在从同一台笔记本电脑启动Web应用程序的container。连接到数据库的urilocalhost:9042。但是,该图像无法与数据库连接。我需要为容器连接到数据库做一些网络配置吗?

[trace] CassandraRepositoryComponents - database will connect using parameters uri: cassandra://localhost:9042/, cluster name: myCluster
[trace] s.d.c.CassandraConnectionUri - created logger Logger[services.db.cassandra.CassandraConnectionUri]
[trace] s.d.c.CassandraConnectionManagementService - creating session with uri CassandraConnectionUri(cassandra://localhost:9042/) and cluster name myCluster
[trace] s.d.c.CassandraConnectionManagementService - exception in connecting with database com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1:9042 (com.datastax.driver.core.exceptions.TransportException: [localhost/127.0.0.1:9042] Cannot connect))
Oops, cannot start the server.

docker文件

FROM openjdk:8
RUN mkdir deploy
WORKDIR deploy
COPY target/universal/myapp-1.0.zip .

COPY conf/logback_dev.xml ./logback.xml
COPY conf/application_dev.conf ./application.conf
RUN unzip myapp-1.0.zip
RUN chmod +x myapp-1.0/bin/myapp
EXPOSE 9000
ENTRYPOINT myapp-1.0/bin/myapp -Dplay.http.secret.key=changemeplease -Dlogger.file=/deploy/logback.xml -Dconfig.file=/deploy/application.conf

Cassandra作为独立应用程序运行

docker cassandra playframework-2.6
2个回答
0
投票

host网络模式运行Docker容器,使该容器可以使用主机网络。

docker run --network="host" -p 9000:9000 IMAGENAME

然后在http://localhost:9000上访问您的应用程序,应该不会看到任何错误。

关于Dockerfile的1条建议,如果您要指定mkdir,则不必WORKDIR,因为它将为您创建它。

FROM openjdk:8
WORKDIR deploy
COPY target/universal/myapp-1.0.zip .

COPY conf/logback_dev.xml ./logback.xml
COPY conf/application_dev.conf ./application.conf
RUN unzip myapp-1.0.zip
RUN chmod +x myapp-1.0/bin/myapp
EXPOSE 9000
ENTRYPOINT myapp-1.0/bin/myapp -Dplay.http.secret.key=changemeplease -Dlogger.file=/deploy/logback.xml -Dconfig.file=/deploy/application.conf

0
投票

From inside of a Docker container, how do I connect to the localhost of the machine?,我将uri字符串更改为将Cassandra连接到cassandra://host.docker.internal:9042/。现在该应用程序已启动!!!>

© www.soinside.com 2019 - 2024. All rights reserved.