Local DynamoDB: невозможно выполнить HTTP-запрос - соединение отклонено - PullRequest
0 голосов
/ 13 февраля 2019

Я запускаю локальную DynamoDB и приложение через docker-compose.К сожалению, при обращении к DynamoDB из приложения возникает ошибка:

Unable to execute HTTP request: Connect to dynamodb:80 [dynamodb/172.18.0.2] failed: Connection refused (Connection refused)

Вот как выглядит docker-compose:

version: "3"
services:
  dynamodb:
    image: "dynamodb-local:latest"
    container_name: app-dynamodb
    ports:
      - "80:8000"
  api:
    image: "app-backend:latest"
    container_name: app-api
    ports:
      - "5000:5000"
      - "5100:5100"
    environment:
      - DYNAMO_HOST=dynamodb:80

Вот как Dockerfile для DynamoDB:

FROM openjdk:8-jre

ENV DYNAMODB_VERSION=latest

COPY .aws/ root/.aws/
COPY setup.sh setup.sh
COPY setup-stats.sh setup-stats.sh

RUN apt-get update && \
    apt-get install -y python python-pip && \
    pip --no-cache-dir install awscli && \
    apt-get clean all && \
    curl -O https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_${DYNAMODB_VERSION}.tar.gz && \
    tar zxvf dynamodb_local_${DYNAMODB_VERSION}.tar.gz && \
    rm dynamodb_local_${DYNAMODB_VERSION}.tar.gz

EXPOSE 8000

ENTRYPOINT java -Djava.library.path=. -jar DynamoDBLocal.jar --sharedDb -inMemory

ОБНОВЛЕНИЕ:

  1. Я могу подключиться к оболочке JS DynamoDB с хоста по http://localhost/shell
  2. ЯНЕ МОЖЕТ подключиться к DynamoDB из контейнера приложения:
wget dynamodb/shell
Connecting to dynamodb (172.18.0.2:80)
wget: can't connect to remote host (172.18.0.2): Connection refused
Приложение написано на Scala и использует Scanamo для взаимодействия с DynamoDB

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Я вижу, что нет связи между БД и контейнером API.Есть пара Docker Links Key-Value, которая поможет.Найдите обновленный файл docker-compose.

version: "3"
services:
  dynamodb:
    image: "dynamodb-local:latest"
    container_name: app-dynamodb
    ports:
      - "80:8000"
  api:
    image: "app-backend:latest"
    container_name: app-api
    ports:
      - "5000:5000"
      - "5100:5100"
    links:
      - dynamodb
    environment:
      - DYNAMO_HOST=dynamodb:80

Это может быть решением. Пожалуйста, дайте мне знать статус.

0 голосов
/ 13 февраля 2019

Проблема была в пропущенных DYNAMO_ACCESS_KEY и DYNAMO_SECRET_KEY Несмотря на то, что dyanmoDB является локальным и работает в памяти, он требует значений access_key и secret_key в любом случае

Кроме того, эти значения НЕ должныбыть пустым!Поэтому установите там все, что вы хотите, например, "foo" или "bar".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...