Docker 本地DynamoDB:无法执行HTTP请求—;拒绝连接
我通过docker compose运行本地DynamoDB和一个应用程序。不幸的是,我在从应用程序查询DynamoDB时遇到错误:Docker 本地DynamoDB:无法执行HTTP请求—;拒绝连接,docker,docker-compose,amazon-dynamodb,Docker,Docker Compose,Amazon Dynamodb,我通过docker compose运行本地DynamoDB和一个应用程序。不幸的是,我在从应用程序查询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:
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
下面是DynamoDB的Dockerfile的使用方法:
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
更新:
问题在于缺少
DYNAMO\u访问密钥
和DYNAMO\u机密密钥
尽管dyanmoDB是本地的,并且在内存中运行,但它无论如何都需要access\u key
和secret\u key
值
此外,这些值不应为空!因此,可以在那里设置任何您想要的内容,如“foo”或“bar”。我可以看到DB和API容器之间没有通信。有一个Docker链接键值对将有所帮助。请查找更新的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
这可能就是解决方案。请让我知道状态。您是否尝试在端口8000上连接到dynamo?。我不确定您是否能够从同一网络中的容器连接到端口80上的dynamo,因为端口80将服务公开给外部网络(这就是您能够从主机连接的原因)。与此相反,尝试将
DYNAMO\u HOST
env变量更改为dynamodb:8000
我的问题通过我在上面发布的评论得到了解决;)
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