【问题标题】:How to make a docker container communicate with the localstack docker container with docker-compose?如何使用 docker-compose 使 docker 容器与 localstack docker 容器通信?
【发布时间】:2019-12-11 23:12:48
【问题描述】:

我正在 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] 失败:连接被拒绝(连接被拒绝)

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    关于这个错误

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

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

    links:
    - localstack
    

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

    1. 将 localstack 容器链接到您的应用程序。例如,如果链接名称是localstack,那么您可以使用localstack:4567 访问服务

    2. 获取主机真实IP地址,IP:4567访问

    【讨论】:

    • 我不明白。链接:-localstack 已经在 jc 服务中。如果我尝试将链接添加到 localstack,则在运行 docker-compose 时会出现错误。你是说aws服务应该在主机localstack上可用吗?不是本地主机?
    • 我已经删除了。
    猜你喜欢
    • 1970-01-01
    • 2022-11-13
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多