java如何修复dockercompose中绝地武士的连接拒绝错误?
我正在用redis服务器和java应用程序设置docker compose,当redis在docker compose中运行时,我的代码工作正常 在主机操作系统中使用外部java程序
但当我将java程序放入容器中时,我得到了
JAVA网ConnectException:连接被拒绝
Redis cli 127.0.0.1:6379>;它也很好用
try {
Thread.sleep(3000);
jedis = new Jedis("localhost");
this.restTemplate = new RestTemplate();
startWorking();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
当使用“redis”而不是“localhost”时,docker compose外部会出现未知主机错误,docker compose内部的连接被拒绝
这是我的备忘录。yml
redis:
image: redis
ports:
- "6379:6379"
worker:
build: worker
# 1 楼答案
尝试显式指定网络并添加
depends_on
,以确保在工作人员需要时redis已启动使用
new Jedis("redis", 6379);
创建jedis
实例你可能想读更多关于networking in compose和dependencies between services的内容
您还可以尝试在不使用compose的情况下运行示例,然后将其转换为compose配置。这里是没有docker compose的an example of network configuration