如何使用docker-compose解决dynamodb本地调用 [英] How to fix dynamodb local call using docker-compose

查看:152
本文介绍了如何使用docker-compose解决dynamodb本地调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在通过docker-compose在docker容器中启动springboot应用程序和dynamodb本地。

I'm starting a springboot app and dynamodb local in docker containers via docker-compose.

两个容器都成功启动。

当我将容器名称用作AMAZON_AWS_DYNAMODB_EN​​DPOINT值时,出现以下错误:

When I use the container name for the AMAZON_AWS_DYNAMODB_ENDPOINT value, I get the following error:

[https-jsse-nio-8443-exec-6] [2019-04-15 08:03:42,239] INFO   com.amazonaws.protocol.json.JsonContent [] - Unable to parse HTTP response content
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: (byte[])"<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://aws.amazon.com/dynamodb/">here</a>.</p>
</body></html>

进一步,我遇到以下错误:

Further down I'm getting the following error:

com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: null (Service: AmazonDynamoDBv2; Status Code: 301; Error Code: null; Request ID: null)

如果我将AMAZON_AWS_DYNAMODB_EN​​DPOINT值替换为Windows计算机IP地址(运行容器)

If I replace the AMAZON_AWS_DYNAMODB_ENDPOINT value with my Windows computer IP address (running the containers) it works successfully.

关于如何使容器名称正常工作的任何建议?

Any suggestions on how to get the container name working?

这是我的码头工人-撰写:

Here's my docker-compose:

version: '3'
services:
  dynamodb:
    image: amazon/dynamodb-local
    ports:
      - "8000:8000"
    volumes:
      - dynamodata:/data
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ."

  app:
    build: .
    ports:
      - "8443:8443"

    environment:
      - SERVER_PORT=8443
      - SERVER_SSL_KEY_STORE=/etc/ssl/key
      - SERVER_SSL_KEY_STORE_TYPE=PKCS12
      - SERVER_SSL_KEY_ALIAS=tomcat
      - SERVER_SSL_KEY_STORE_PASSWORD=xxxxxx
      - SPRING_PROFILES_ACTIVE=aws,local
      - DATAPOWER_ENABLED=true
#      - AMAZON_AWS_DYNAMODB_ENDPOINT=${DYNAMODB_ENDPOINT:-http://dynamodb:8000}  <--- does not work
#      - AMAZON_AWS_DYNAMODB_ENDPOINT=${DYNAMODB_ENDPOINT:-http://xx.xxx.xxx.xxx:8000}  <--- works
      - AMAZON_AWS_DYNAMODB_REGION=${DYNAMODB_REGION:-us-east-1}
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-local}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-xxxxxxxxxx}
      - ENV=dev
      - AWS_REGION=us-east-1

volumes:
  dynamodata:

谢谢

推荐答案

尝试添加网络

Try adding networks something like this:

version: '3'
services:
  dynamodb:
    image: amazon/dynamodb-local
    ports:
      - "8000:8000"
    volumes:
      - dynamodata:/data
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ."
    networks:
      - my-network

  app:
    build: .
    ports:
      - "8443:8443"

    environment:
      - SERVER_PORT=8443
      - SERVER_SSL_KEY_STORE=/etc/ssl/key
      - SERVER_SSL_KEY_STORE_TYPE=PKCS12
      - SERVER_SSL_KEY_ALIAS=tomcat
      - SERVER_SSL_KEY_STORE_PASSWORD=xxxxxx
      - SPRING_PROFILES_ACTIVE=aws,local
      - DATAPOWER_ENABLED=true
#      - AMAZON_AWS_DYNAMODB_ENDPOINT=${DYNAMODB_ENDPOINT:-http://dynamodb:8000}  <--- does not work
#      - AMAZON_AWS_DYNAMODB_ENDPOINT=${DYNAMODB_ENDPOINT:-http://xx.xxx.xxx.xxx:8000}  <--- works
      - AMAZON_AWS_DYNAMODB_REGION=${DYNAMODB_REGION:-us-east-1}
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-local}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-xxxxxxxxxx}
      - ENV=dev
      - AWS_REGION=us-east-1
    networks:
      - my-network

volumes:
  dynamodata:

networks:
  my-network:
    driver: bridge

这篇关于如何使用docker-compose解决dynamodb本地调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆