spring Sping Boot 容器无法连接到Localstack容器

f0brbegy  于 2023-03-16  发布在  Spring
关注(0)|答案(2)|浏览(145)

我是一个LocalStack/Docker新手,尝试创建一个docker-composite.yml文件来启动一个Sping Boot 应用程序容器+一个LocalStack容器,我不确定是否应该为容器创建一个网络,以及如何配置SQS URL,以便能够将我的Spring Boot应用程序与运行在LocalStack上的SQS连接起来,感谢您的提示。

停靠-编写.yml

version: "3.8"
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: my-spring-app
    container_name: spring-app
    ports:
      - "8080:8080"
    environment:
      - AWS_ACCESS_KEY_ID=12345
      - AWS_SECRET_ACCESS_KEY=12345
    depends_on:
      - localstack
  
  localstack:
    image: localstack/localstack:latest
    container_name: localstack
    environment:
      - SERVICES=sqs
      - DEBUG=1
    ports:
      - "4566:4566"
    volumes:
      - "/tmp/localstack:/tmp/localstack"

应用程序.yml(Sping Boot 应用程序)

cloud:
  aws:
    stack:
      auto: false
    region:
      static: us-east-1
      auto: false
    credentials:
      access-key: 12345
      secret-key: 12345
    queue:
      uri: http://localhost:4566
      name: sample-queue.fifo
xjreopfe

xjreopfe1#

URI应该是docker-compose.yaml中的服务名称在您的情况下:

**application.yml** (Spring Boot App)

    cloud:
      aws:
        stack:
          auto: false
        region:
          static: us-east-1
          auto: false
        credentials:
          access-key: 12345
          secret-key: 12345
        queue:
          uri: http://localstack:4566
          name: sample-queue.fifo
qij5mzcb

qij5mzcb2#

合成自动为您创建网络;您不需要在合成文件中手动指定networks:。每个服务对于使用其合成服务名作为主机名的其他容器都是可见的,即applocalstack。另请参阅Docker文档中的Networking in Compose
您可以使用环境变量设置Spring属性,在容器环境中指定这些环境变量几乎总是比尝试在应用程序中更改YAML文件更容易。您应该能够设置:

version: "3.8"
services:
  app:
    build: .
    ports:
      - "8000:8000"
    environment:
      - AWS_ACCESS_KEY_ID=12345
      - AWS_SECRET_ACCESS_KEY=12345
      - SPRING_CLOUD_QUEUE_URI=http://localstack:4566  # <-- add this
    depends_on:
      - localstack

  localstack: { ... }

相关问题