ERROR "grpc_status": 14. от клиента при попытке сделать запрос к серверу внутри Docker
Я использую django grpc framework для сервера и fastapi для клиента. Все это хорошо работает в локальном режиме, запуская их по очереди. Но когда я пытаюсь использовать Docker, почему-то (я думаю) клиент не может установить соединение.
Вот код для клиента:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import grpc
from blog_proto import post_pb2, post_pb2_grpc
channel = grpc.insecure_channel('grpc_service:5000')
stub = post_pb2_grpc.PostControllerStub(channel)
class Delivery(BaseModel):
id: int
title: str
content: str
app = FastAPI()
origins = [
"http://localhost",
"http://localhost:8080",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.on_event("startup")
async def init_grpc():
channel = grpc.insecure_channel('grpc_service:5000')
stub = post_pb2_grpc.PostControllerStub(channel)
@app.post("/delivery/")
async def create_item(delivery: Delivery):
return delivery
@app.get("/delivery/{id}")
async def get_item(id: int):
response = stub.Retrieve(post_pb2.PostRetrieveRequest(id=id))
return {
"id": response.id,
"title": response.title,
"content": response.content
}
код для docker-compose:
---
version: '3.9'
services:
db:
image: postgres
ports:
- "8888:5432"
environment:
POSTGRES_DB: grpc
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- postgres:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4:latest
environment:
PGADMIN_DEFAULT_EMAIL: lawteam@gmail.com
PGADMIN_DEFAULT_PASSWORD: lawteam
PGADMIN_LISTEN_PORT: 80
ports:
- 15432:80
volumes:
- pgadmin:/var/lib/pgadmin
depends_on:
- db
grpc_service:
container_name: grpc_service
build:
context: ./tutorial
dockerfile: Dockerfile
command: >
bash -c "python /code/manage.py makemigrations
&& python /code/manage.py migrate
&& python /code/manage.py grpcrunserver 0.0.0.0:5000"
# volumes:
# - ./tutorial/grpc_service/:/code
ports:
- "5000:5000"
environment:
- DB_ENGINE=django.db.backends.postgresql
- DB_NAME=grpc
- DB_USER=postgres
- DB_PASSWORD=postgres
- DB_HOST=db
- DB_PORT=5432
- DEBUG_MODE=True
- EMAIL_HOST_USER=lawteam@gmail.com
- EMAIL_HOST_PASSWORD=lawteam
depends_on:
- db
client_service:
container_name: client
build:
context: ./client
dockerfile: Dockerfile
command: "uvicorn client:app --reload --host 0.0.0.0 --port 8000"
# volumes:
# - ./client_service/:/code/
ports:
- "8000:8000"
environment:
- DATABASE_URI=postgresql://postgres:postgres@db/grpc
depends_on:
- db
- grpc_service
volumes:
postgres:
pgadmin:
и вот ошибка, которую я получил
Заранее спасибо!!!