python - docker compose links hastname 在 python 中找不到
问题描述
我有一个包含多个服务器的 docker compose 文件。java 和数据库服务器之间的链接有效,我可以通过主机名“db”访问我的 SQL 服务器。现在我想将数据包从我的爬虫发送到我的 java 后端。策略是一样的,我在links中设置java服务器,然后通过参数传递地址。在 python 中,参数以“http://java:8080”的形式到达,但连接失败。如何正确设置链接以及需要将什么传递给 python?
错误:
... packages/requests/sessions.py", line 655, in send
scraper-new | r = adapter.send(request, **kwargs)
scraper-new | File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 516, in send
scraper-new | raise ConnectionError(e, request=request)
scraper-new | requests.exceptions.ConnectionError: HTTPConnectionPool(host='java', port=8080): Max retries exceeded with url: /book/add (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f66e4cb9be0>: Failed to establish a new connection: [Errno 111] Connection refused',))
我的(一半)docker-compose.yml
java:
container_name: bookAPI
image: openjdk:8
volumes:
- ./:/app
working_dir: /app
command: bash -c "cd /app && java -jar bookAPI.jar --spring.datasource.url="jdbc:mysql://db:3306/bookAPI""
stdin_open: true
tty: true
links:
- db
ports:
- 8080:8080
scrapy-ebay-new:
build: ./scraper
container_name: scraper-new
working_dir: /data
volumes:
- ./scraper/ebay-new:/data/config
command: bash -c "chmod 777 linux.sh && dos2unix linux.sh && ./linux.sh http://java:8080 user pw"
links:
- java
linux.sh
#!/bin/bash
while :
do
scrapy crawl ebay -a db=$1 -a user=$2 -a passwd=$3
done
解决方案
推荐阅读
- python - 如何为 POS 打印机格式化 python 文本
- c - 编译器如何区分 int 和 char 指针?
- c# - 如何在 Visual Studio 2019 中更改此特定颜色?
- python - 是否有可能在指定的时间后消失的输出?
- arrays - 获取数组中每个字符串最后一次出现的索引
- python - 将一个列表的元素插入到python中不同位置的另一个列表中
- javascript - 无法访问 Vue JS 3 中的子对象
- java - 如何让 Firebase 告诉我用户崩溃的确切代码行?
- java - Java 转换为 base 7
- flutter - 计数器应用程序之外的简单 Riverpod 示例:两个单元格的总和