Проблема
У меня есть два Docker контейнера:
- сервер работал с
fastapi;uvicorn
- клиентом, отправляющим
GET
запрос к http://0.0.0.0
Сервер работает нормально, так как bash curl -X GET http://0.0.0.0
работает как положено. Однако мой docker клиент, похоже, не может получить доступ.
После построения клиентского контейнера (файлы ниже), при выполнении docker run -it --name app_client_container app_client:latest
я получаю следующую ошибку:
запросов .exceptions.ConnectionError: HTTPConnectionPool (host = '0.0.0.0', port = 80): Превышено максимальное количество попыток с помощью url: / (вызвано NewConnectionError (': не удалось установить sh новое соединение: Errno 111 Connection отказано') )
Настройка
Мой проект выглядит так
|- client.Dockerfile
|- client.py
|- client_req.txt
|- server.Dockerfile
|- server.py
|- server_req.txt
Клиент
# client.Dockerfile
FROM python:3.8
WORKDIR /srv
WORKDIR /srv
ADD client_req.txt /srv/client_req.txt
RUN pip install -r client_req.txt
ADD . /srv
CMD python /srv/client.py
# client.py
import json
import requests
import traceback
try:
response = requests.get('http://0.0.0.0', timeout=5)
print(json.dumps(response.json(), indent=4))
except Exception as e:
print('Connection could not be established :(')
print('Here is more information:')
traceback.print_exc()
# client_req.txt
requests
Сервер
# server.Dockerfile
FROM python:3.8
WORKDIR /srv
ADD server_req.txt /srv/server_req.txt
RUN pip install -r server_req.txt
EXPOSE 80
ADD . /srv
CMD uvicorn server:app --host 0.0.0.0 --port 80 --reload
# server.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
# server_req.txt
fastapi
uvicorn