Добрый день!Я написал клиентские и серверные приложения, я запускаю их через докер, но клиентское приложение не может подключиться к серверу.
Код клиента:
import requests
import json
class Client:
def attach_comp_to_employee(self, employee_id, company):
try:
res = requests.get('http://0.0.0.0:8080/',
data=json.dumps({"action": "comp_to_employee",
"id": employee_id,
"company": company,
"owner_name": self.user,
"dbname": self.dbname,
"password": self.password}),
timeout=3)
except requests.exceptions.ConnectionError:
res = "Can't connect to server."
except requests.exceptions.Timeout:
res = "Time for connection expired."
finally:
return res
cl = Client("test_user1", "shop", "password1")
print("Send...")
res = cl.attach_comp_to_employee(6, "ABCD")
print(res)
Код сервера:
from aiohttp import web
class Service:
def __init__(self):
self.app = web.Application()
self.app.add_routes([web.get('/', self.handler)])
async def handler(self, request):
return web.json_response({"response": "Hi"})
print("Start...")
ser = Service()
web.run_app(ser.app)
Я создал два файла Docker для них.
Dockerfile для клиента:
FROM python:3
WORKDIR /app
ADD . /app
RUN pip3 install requests
CMD ["python3", "client.py"]
Dockerfile для сервера:
FROM python:3
WORKDIR /app
ADD . /app
RUN pip3 install aiohttp
CMD ["python3", "server.py"]
Затем я создал docker-compose.yml:
version: '3'
services:
server:
build: ./server
client:
build: ./client
links:
- "server:localhost"
В конце концов мой каталог выглядит так:
project
|___server
| |__Dockerfile
| |__server.py
|__client
| |__Dockerfile
| |__client.py
|__docker_compose.yml
Когда я запускаю docker-compose up
, я вижу это:
docker-compose up
Если я прерву его с помощью Cntr+ C
, я увижу это:
Прерывание
Итак, сервер работает и ждет запросов.
Помогите мне, пожалуйста.Что не так в моем коде?Что я должен сделать, чтобы соединить эти два скрипта?