我创造了一个 docker
我的web应用程序的图像。我有一个 cassandra
数据库在我的笔记本电脑上运行,我正在启动 container
从同一台笔记本电脑上下载我的web应用程序。这个 uri
无法连接到数据库 localhost: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作为一个独立的应用程序运行
3条答案
按热度按时间qojgxg4l1#
从docker容器的内部引用“how do i connect to the localhost of the machine?”,我将uri字符串改为connect to cassandra to
cassandra://host.docker.internal:9042/
. 现在应用程序启动了!!!而且,似乎
host.docker.internal
Map到主网络接口的ip地址。当我想跑的时候cqlsh
(在另一个跑步实验中)cassandra
以及通过docker
-无法在win10 home上启动cassandra docker映像),我注意到了这一点。另外,ping host.docker.internal
配置此域时
docker
安装在etc/hosts
在windows
```Added by Docker Desktop
192.168.1.12 host.docker.internal
192.168.1.12 gateway.docker.internal
To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
End of section
qij5mzcb2#
运行docker容器
host
允许容器使用主机网络的网络模式。然后在上访问应用程序
http://localhost:9000
不应该看到任何错误。1建议
Dockerfile
,你不必mkdir
如果指定WORKDIR
因为它会为你创造它。g6ll5ycj3#
无法使用127.0.0.1访问主机上打开的端口。您需要找到分配给vm网络接口的ip(在mac和linux中您可以使用)
ifconfig
命令)。从docker容器使用相同的ip访问cassandra。另外,检查cassandra是否接受来自任何ip的连接。将此设置为0.0.0.0将侦听所有网络接口。在cassandra.yaml配置文件中进行以下更改: