【发布时间】:2016-12-07 22:47:19
【问题描述】:
我正在尝试了解 Docker。我有一个非常基本的容器设置,它运行一个简单的 python 脚本来:
- 查询数据库
- 将查询结果写入 CSV 文件
- 将 CSV 上传到 S3 (using the tinys3 package)。
当我从我的主机运行脚本时,一切都按预期工作:查询触发,csv 被完美地创建和上传。但是当我从我的 Docker 容器中运行它时,tinys3 失败并出现以下错误:
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='my-s3-bucket', port=443): Max retries exceeded with url: /bucket.s3.amazonaws.com/test.csv (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f4f17cf7790>: Failed to establish a new connection: [Errno -2] Name or service not known',))
在此之前的一切工作(查询和 CSV 创建)。 This answer suggests that there's an incorrect endpoint。但这似乎不正确,因为从我的主机运行脚本不会导致错误。
所以我的问题是:我是否遗漏了一些明显的东西?这是 tinys3 模块的问题吗?我是否需要在我的容器中设置一些东西以允许它“呼出”?或者有更好的方法吗?
【问题讨论】:
-
我已经...“解决”了它。存储桶/文件名的命名略有不同。我可以将“/subbucket/file.csv”作为文件上传,但不能将“file.csv”上传到“bucket/subbucket”(即使后者适用于我的主机)。
-
你是怎么解决这个问题的?我的请求超时,没有错误消息
-
这是一个关键错误。因此,与其将存储桶设置为“bucket/stuff/test/”并将我想要的文件设置为“file.py”,不如将存储桶设置为“bucket”并将文件名设置为“/stuff/test/file.py” '。奇怪的是,前者在本地工作,但不在我的服务器上。奇怪的问题,不知道你的是否类似。