OSError: Несколько исключений: [Errno 111] при подключении к базе данных с помощью docker-composePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 OSError: Несколько исключений: [Errno 111] при подключении к базе данных с помощью docker-compose

Сообщение Anonymous »

Я пишу свой API бронирования с помощью FastAPI. У меня есть файл докера:

Код: Выделить всё

FROM python:3.11

RUN mkdir /booking

WORKDIR /booking

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY .  .

CMD [ "gunicorn", "app.main:app", "--workers", "4", "--worker-class", "uvicorn.workers.UvicornWorker", "--bind=0.0.0.0:8000" ]
И docker-compose.yml:

Код: Выделить всё

services:
db:
image: postgres:16
container_name: booking_db
env_file:
- .env-non-dev
ports:
- 5432:5432
redis:
image: redis:7
container_name: redis

booking:
image: booking_image
build:
context: .
container_name: booking_app
env_file:
- .env-non-dev
depends_on:
- db
- redis
command: sh -c "alembic upgrade head &&  gunicorn app.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind=0.0.0.0:8000"
ports:
- 8000:8000

celery:
build:
context: .
container_name: booking_celery
command: sh -c "celery --app=app.tasks.celery_app:celery worker -l INFO"
env_file:
- .env-non-dev
depends_on:
- redis

flower:
build:
context: .
container_name: booking_flower
command: sh -c "celery --app=app.tasks.celery_app:celery flower"
env_file:
- .env-non-dev
depends_on:
- redis
Когда я делаю Docker Compose, моя база данных подключается:

Код: Выделить всё

booking_db      | 2024-10-10 21:30:22.665 UTC [1] LOG:  database system is ready to accept connections
но когда мое приложение пытается выполнить обновление перегонного куба, оно вызывает исключение:

Код: Выделить всё

booking_app     |   File "/usr/local/lib/python3.11/site-packages/asyncpg/connection.py", line 2329, in connect
booking_app     |     return await connect_utils._connect(
booking_app     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
booking_app     |   File "/usr/local/lib/python3.11/site-packages/asyncpg/connect_utils.py", line 1017, in _connect
booking_app     |     raise last_error or exceptions.TargetServerAttributeNotMatched(
booking_app     |   File "/usr/local/lib/python3.11/site-packages/asyncpg/connect_utils.py", line 991, in _connect
booking_app     |     conn = await _connect_addr(
booking_app     |            ^^^^^^^^^^^^^^^^^^^^
booking_app     |   File "/usr/local/lib/python3.11/site-packages/asyncpg/connect_utils.py", line 828, in _connect_addr
booking_app     |     return await __connect_addr(params, True, *args)
booking_app     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
booking_app     |   File "/usr/local/lib/python3.11/site-packages/asyncpg/connect_utils.py", line 873, in __connect_addr
booking_app     |     tr, pr = await connector
booking_app     |              ^^^^^^^^^^^^^^^
booking_app     |   File "/usr/local/lib/python3.11/site-packages/asyncpg/connect_utils.py", line 744, in _create_ssl_connection
booking_app     |     tr, pr = await loop.create_connection(
booking_app     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
booking_app     |   File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1094, in create_connection
booking_app     |     raise OSError('Multiple exceptions: {}'.format(
booking_app     | OSError: Multiple exceptions: [Errno 111] Connect call failed ('::1', 5432, 0, 0), [Errno 111] Connect call failed ('127.0.0.1', 5432)
Я думаю, что мое приложение не может запуститься из-за головки обновления перегонного куба, потому что оно начинается с

Код: Выделить всё

command: sh -c "gunicorn app.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind=0.0.0.0:8000"
но когда я пытаюсь работать с какой-то конечной точкой, возникает исключение
P.S. я добавил POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD в файл .env-non-dev
Я пытался запустить свое приложение без головки обновления перегонного куба code> и это сработало.
Пытался сделать это с помощью bash-скриптов, но мое приложение их тоже не увидело

Подробнее здесь: https://stackoverflow.com/questions/790 ... with-docke
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»