当前我有一个个人docker映像上传到DockerHub,我正在进行更改以将该应用程序连接到redis(也正在另一个docker容器中运行)
现在,当我的应用程序尝试连接到Redis时,我收到了下一条消息:
Error saving to redis: dial tcp 127.0.0.1:6379: connect: connection refused
我知道它们不在同一个网络中,因此我的应用程序指向的是127.0.0.1:6379并没有执行任何操作,因此,我正在寻找以某种方式连接那些容器的最佳方法不要根据托管Redis的IP来设置我的应用程序,我可以在本地计算机上使用Redis,而不能使用另一个Docker容器。简要地说,我所做的是:
docker run --name redis_server -p 6379:6379 -d redis
sudo docker run -d --restart=always -p 10000:10000 --link redis_server:redis --name my_app repo/my_app
因此,我正在寻找有关如何使my_app可访问127.0.0.1:6379的解决方案。我不是用docker-compose
答案 0 :(得分:1)
最简单的解决方案是使用“ --network = host”运行Docker,它将容器绑定到主机网络。这是一个完美的测试解决方案,但是它将端口和服务分别暴露于互联网(如果没有防火墙的话),这可能是安全的,也可能是不安全的。
另一种方式是通过以下方式定义网络:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
然后通过与docker network create -d bridge my-net
运行docker run
命令在同一网络上运行容器。这样,您可以通过其名称引用每个容器。例如,在您的情况下,您可以从Redis容器中--network=my-net
,反之亦然。