为什么在docker-compose中使用python的ConnectionError?

时间:2019-05-24 16:21:03

标签: python docker-compose

我有这个

docker-compose:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

dockerfile(python)

version: '3.3'

services:
  bd_mySql:
    image: mysql:5.7     
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_USER: razvan
      MYSQL_PASSWORD: PepitoElDeLosPalotes
      MYSQL_ROOT_PASSWORD: PepitoElDeLosPalotes
      MYSQL_DATABASE: equipojugadores
  api:
    build: data
    restart: always
    ports:
      - "8084:8084"
  python:
    build: python
    restart: on-failure
    depends_on: 
      - api      

Some of my python code 而且我有这个错误:

  

requests.exceptions.ConnectionError:HTTPConnectionPool(host ='localhost',port = 8084):

为什么?

2 个答案:

答案 0 :(得分:1)

您的scraper.py代码正在尝试连接到localhost:8004,但是您已经将发布端口8004的服务放在了单独的容器中。这类似于将其放在单独的计算机上,因此localhost将无法到达它。相反,您必须使用api:8004,它将解析为放置该服务的api容器的IP。

答案 1 :(得分:0)

您的py代码正在尝试与localhost连接,因为您需要在python部分中提供链接。
之后,您可以调用请求http://api:8084/apiname
这对我有用:

api:
    build: data
    restart: always
    ports:
      - "8084:8084"
python:
    build: python
    restart: on-failure
    depends_on: 
      - api
    links:
      - api