如何通过docker-compose使docker容器与localstack docker容器通信?

时间:2019-12-11 23:12:48

标签: docker docker-compose

我正在docker容器中设置一个应用程序。我希望该应用程序能够与localstack堆栈容器localstack docs连接。当我运行docker-compose up时,容器成功启动。我可以运行docker-compose文件中未包含的单独的Java应用程序,该应用程序将成功连接到localstack容器。但是与localstack一起启动的应用程序无法连接。我已经看了看docker docs和localstack docs,但我想不出如何使这些东西相互通信的方法。任何帮助将不胜感激。这是我的docker-compose文件:

version: '3.4'

networks:
  default:
    driver: bridge

services:
  jc:
    build:
      context: .
      dockerfile: ./Dockerfile
      args:
      - PORT=5001
      network: host
    image: jc
    depends_on:
    - localstack
    container_name: jc
    ports:
    - 5001:5001
    links:
    - localstack
    environment:
    - SPRING_PROFILES_ACTIVE=local
  localstack:
    image: localstack/localstack
    ports:
    - "4567-4584:4567-4584"

我收到的错误消息是:

  

sqs.SqsPoller app = jc version = 2.0.1.0:轮询消息时发生异常:无法执行HTTP请求:连接到localhost:4576 [localhost / 127.0.0.1]失败:连接被拒绝(连接被拒绝)< / p>

1 个答案:

答案 0 :(得分:0)

关于此错误

  

连接到localhost:4576 [ localhost / 127.0.0.1 ]失败:连接被拒绝(连接被拒绝)

似乎您已经在服务jc中准备好设置,对于您的问题应用程序也需要相同的设置。

links:
- localstack

我猜您的应用程序也在另一个docker中运行,而不是直接在主机上运行。因此,您无法从应用程序容器访问localhost:4567,因为在容器本身无法访问这些aws模拟的服务。两种解决方案:

  1. 将localstack容器链接到您的应用程序。例如,如果链接名称为localstack,则可以使用localstack:4567

  2. 访问服务
  3. 获取主机的真实IP地址,使用IP:4567

  4. 访问