You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用docker-compose启动服务无法连接dynamodb-local如何解决

核心问题原因
  • 缺少dynamodb-local容器名称配置:Docker Compose配置中显式指定了container_name: dynamodb-local,同自定义网络下的其他容器可以直接用该名称作为主机名访问服务。你执行的docker run命令未添加--name参数,dynamodb容器会被分配随机名称,django服务自然无法通过dynamodb-local域名解析到对应容器IP。
  • 存在服务启动时序问题:Docker Compose的depends_on仅保证容器启动顺序,不会等待dynamodb-local服务完全初始化完成,你直接启动django服务时可能dynamodb还未就绪,也会触发连接报错。
修复后的完整执行步骤
# 1. 创建自定义桥接网络
docker network create -d bridge net

# 2. 启动dynamodb-local,显式指定容器名,加入自定义网络
# 如果提示名称冲突,先执行docker rm -f dynamodb-local清理残留容器
docker run --name dynamodb-local --network=net --rm -p 8000:8000 -d amazon/dynamodb-local:latest

# 3. 等待dynamodb-local完全就绪,避免时序问题
sleep 3

# 4. 启动django-service执行测试用例
docker run --network=net --rm --env-file ./envs/tests.env -v `pwd`:/app django-service /bin/sh -c 'cd /app && pytest tests/integration -vv'
额外排查建议
  • 确认django服务中dynamodb的连接地址配置为http://dynamodb-local:8000,不要写127.0.0.1,容器内的127.0.0.1指向自身,无法访问同网络的其他容器。
  • 可手动验证网络连通性:启动django容器时将命令替换为tail -f /dev/null让容器保持运行,再通过docker exec进入容器,执行ping dynamodb-local或curl http://dynamodb-local:8000确认网络是否打通。

内容的提问来源于stack exchange,提问作者evgenyorlov1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:54:03