首页 > 解决方案 > 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

标签: pythondockerdocker-compose

解决方案


推荐阅读