bracket icon indicating copy to clipboard operation
bracket copied to clipboard

Bracket Docker in Postgres 18

Open oscartobar opened this issue 1 month ago • 0 comments

When creating a Docker container using the latest version (Postgres 18), this error is generated.

  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
    async with original_context(app) as maybe_original_state:
  File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/app/bracket/app.py", line 42, in lifespan
    await database.connect()
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/databases/core.py", line 112, in connect
    await self._backend.connect()
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/databases/backends/postgres.py", line 74, in connect
    self._pool = await asyncpg.create_pool(**kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/pool.py", line 418, in _async__init__
    await self._initialize()
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/pool.py", line 445, in _initialize
    await first_ch.connect()
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/pool.py", line 132, in connect
    self._con = await self._pool._get_new_connection()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/pool.py", line 517, in _get_new_connection
    con = await self._connect(
          ^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/connection.py", line 2421, in connect
    return await connect_utils._connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 1075, in _connect
    raise last_error or exceptions.TargetServerAttributeNotMatched(
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 1049, in _connect
    conn = await _connect_addr(
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 886, in _connect_addr
    return await __connect_addr(params, True, *args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 931, in __connect_addr
    tr, pr = await connector
             ^^^^^^^^^^^^^^^
  File "/home/bracket/.local/share/virtualenvs/app-4PlAip0Q/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 802, in _create_ssl_connection
    tr, pr = await loop.create_connection(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1099, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1081, in create_connection
    sock = await self._connect_sock(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 984, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/local/lib/python3.12/asyncio/selector_events.py", line 647, in sock_connect
    return await fut
           ^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/selector_events.py", line 687, in _sock_connect_cb
    raise OSError(err, f'Connect call failed {address}')
ConnectionRefusedError: [Errno 111] Connect call failed ('172.18.0.4', 5432)
[2025-10-31 00:11:27 +0000] [8] [ERROR] Application startup failed. Exiting.
[2025-10-31 00:11:27 +0000] [8] [INFO] Worker exiting (pid: 8)
[2025-10-31 00:11:28 +0000] [1] [ERROR] Worker (pid:8) exited with code 3
[2025-10-31 00:11:28 +0000] [1] [ERROR] Shutting down: Master
[2025-10-31 00:11:28 +0000] [1] [ERROR] Reason: Worker failed to boot.
[2025-10-31 00:11:33 +0000] [1] [INFO] Starting gunicorn 23.0.0
[2025-10-31 00:11:33 +0000] [1] [INFO] Listening at: http://0.0.0.0:8400 (1)
[2025-10-31 00:11:33 +0000] [1] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2025-10-31 00:11:33 +0000] [9] [INFO] Booting worker with pid: 9

After reviewing, I found that this new version has some differences, therefore the docker-compose.yml file must be modified so that instead of being

 postgres:
    environment:
      POSTGRES_DB: bracket_dev
      POSTGRES_PASSWORD: bracket_dev
      POSTGRES_USER: bracket_dev
    image: postgres
    networks:
      - bracket_lan
    restart: always
    volumes:
      - bracket_pg_data:/var/lib/postgresql/data

Now it must be like this

postgres:
    environment:
      POSTGRES_DB: bracket_dev
      POSTGRES_PASSWORD: bracket_dev
      POSTGRES_USER: bracket_dev
    image: postgres
    networks:
      - bracket_lan
    restart: always
    volumes:
      - bracket_pg_data:/var/lib/postgresql

see https://hub.docker.com/_/postgres/#pgdata

https://github.com/docker-library/postgres/pull/1259

oscartobar avatar Oct 31 '25 13:10 oscartobar