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:

и вот ошибка, которую я получил

Заранее спасибо!!!

Вернуться на верх