Docker容器问题无法通信

时间:2019-03-19 13:03:21

标签: docker docker-compose

我是Docker的初学者,我写了一个简单的docker-compose.yml文件,用于运行两个服务容器,第一个容器用于节点应用程序,另一个用于redis问题,因为我的应用服务器无法与redis容器连接,这是我的代码:< / p>

version: '3'
services:
    redis:
        image: redis
        ports:
            - "6379:6379"
        networks:
            - test
    app_server:
        image: app_server
        depends_on:
            - redis
        links:
           - redis
        ports:
            - "4004:4004"
        networks:
            - test
networks:
    test:

输出: 错误:Redis与127.0.0.1:6379的连接失败-连接ECONNREFUSED

2 个答案:

答案 0 :(得分:2)

好像您的webapp正在连接到127.0.0.1 / localhost而不是redis。因此,这不是docker问题,而是Web应用程序中更多的编程问题。您可以在您的Web应用程序中添加环境变量(类似REDIS_HOST),然后在compose文件中提供该参数。当然,这需要您的Web应用程序从环境变量读取redis主机。

撰写中的示例环境变量分配:

  webapp:
      image: my_web_app
      environment:
          - REDIS_HOST=redis

再次,这要求您的Web应用程序实际上在其代码中使用REDIS_HOST环境变量。

答案 1 :(得分:0)

127.0.0.1:6379连接到current container localhost而不是Redis容器

使用您的docker-composer文件。现在,您通过redis容器名称连接到redis。如果docker-compose自动创建docker桥接网络-允许您通过其名称调用另一个容器... docker inspect查看redis容器名称-例如当前的redis容器名称为redis_abc,因此您可以通过redis_abc:6379连接到redis,或者更简单,只需将container_name: redis_server添加到docker-为某些容器名称编写文件。 https://docs.docker.com/network/bridge/