Error message with latest docker image

My Dockerfile pulls the latest Wolfi image like so:

FROM langchain/langgraph-api:3.13-wolfi

Building it again yesterday, my app won’t start due to error messages:

2026-01-21T11:02:34.752553+00:00 app[web.1]: 2026-01-21T11:02:34.752439Z [error    ] Traceback (most recent call last):
2026-01-21T11:02:34.752571+00:00 app[web.1]: File “/api/langgraph_api/grpc/client.py”, line 280, in wait_until_grpc_ready
2026-01-21T11:02:34.752572+00:00 app[web.1]: File “/api/langgraph_api/grpc/client.py”, line 115, in healthcheck
2026-01-21T11:02:34.752572+00:00 app[web.1]: File “/usr/lib/python3.13/site-packages/grpc/aio/_call.py”, line 328, in await
2026-01-21T11:02:34.752573+00:00 app[web.1]: raise _create_rpc_error(
2026-01-21T11:02:34.752573+00:00 app[web.1]: …<2 lines>…
2026-01-21T11:02:34.752574+00:00 app[web.1]: )
2026-01-21T11:02:34.752575+00:00 app[web.1]: grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with:
2026-01-21T11:02:34.752575+00:00 app[web.1]: status = StatusCode.UNAVAILABLE
2026-01-21T11:02:34.752589+00:00 app[web.1]: details = “failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:50051: Failed to connect to remote host: connect: Connection refused (111)”
2026-01-21T11:02:34.752592+00:00 app[web.1]: debug_error_string = “UNKNOWN:Error received from peer  {grpc_status:14, grpc_message:“failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:50051: Failed to connect to remote host: connect: Connection refused (111)”}”
2026-01-21T11:02:34.752593+00:00 app[web.1]: >
2026-01-21T11:02:34.752593+00:00 app[web.1]:
2026-01-21T11:02:34.752593+00:00 app[web.1]: The above exception was the direct cause of the following exception:
2026-01-21T11:02:34.752593+00:00 app[web.1]:
2026-01-21T11:02:34.752594+00:00 app[web.1]: Traceback (most recent call last):
2026-01-21T11:02:34.752594+00:00 app[web.1]: File “/usr/lib/python3.13/site-packages/starlette/routing.py”, line 694, in lifespan
2026-01-21T11:02:34.752595+00:00 app[web.1]: async with self.lifespan_context(app) as maybe_state:
2026-01-21T11:02:34.752595+00:00 app[web.1]: ~~~~~~~~~~~~~~~~~~~~~^^^^^
2026-01-21T11:02:34.752595+00:00 app[web.1]: File “/usr/lib/python3.13/contextlib.py”, line 214, in aenter
2026-01-21T11:02:34.752596+00:00 app[web.1]: return await anext(self.gen)
2026-01-21T11:02:34.752596+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^
2026-01-21T11:02:34.752597+00:00 app[web.1]: File “/api/langgraph_api/timing/timer.py”, line 227, in combined_lifespan
2026-01-21T11:02:34.752597+00:00 app[web.1]: File “/usr/lib/python3.13/contextlib.py”, line 668, in enter_async_context
2026-01-21T11:02:34.752597+00:00 app[web.1]: result = await _enter(cm)
2026-01-21T11:02:34.752597+00:00 app[web.1]: ^^^^^^^^^^^^^^^^
2026-01-21T11:02:34.752597+00:00 app[web.1]: File “/usr/lib/python3.13/contextlib.py”, line 214, in aenter
2026-01-21T11:02:34.752598+00:00 app[web.1]: return await anext(self.gen)
2026-01-21T11:02:34.752598+00:00 app[web.1]: ^^^^^^^^^^^^^^^^^^^^^
2026-01-21T11:02:34.752598+00:00 app[web.1]: File “/usr/lib/python3.13/site-packages/langgraph_runtime_postgres/lifespan.py”, line 97, in lifespan
2026-01-21T11:02:34.752598+00:00 app[web.1]: await wait_until_grpc_ready()
2026-01-21T11:02:34.752598+00:00 app[web.1]: File “/api/langgraph_api/grpc/client.py”, line 289, in wait_until_grpc_ready
2026-01-21T11:02:34.752598+00:00 app[web.1]: RuntimeError: gRPC server not ready after 10.0s (reached max attempts: 20)

I also see that recently, the default image was updated to 0.7:

And when I use an older version like this, the error disappears:

FROM langchain/langgraph-api:0.6.39-py3.13

Claude says that the reason is in my entrypoint: before starting the app itself, I set the environment variable for the REDIS_URI:

export REDIS_URI="${REDIS_URL}?ssl_cert_reqs=none"

And it seems the ssl_cert_reqs part is the culprit - but I haven’t found a solution yet. Anyone else seeing this?

Hi Alex - thanks for raising this! This is a bug in the new images released from 0.7.0 onwards. For context, as part of the 0.7.0 bump we switched a chunk of the internals to using go and the go redis parser we’re using doesn’t support that parameter, thus the start up errors. We just put out version 0.7.4 that should resolve this issue. Please try bumping there and let us know if there are any other problems!

1 Like

Thanks, @Josh - I just tried and the error is gone.

1 Like

I just ran into this issue, I can confirm langchain/langgraph-api:0.6.39-py3.13-wolfiworks but langchain/langgraph-api:0.7.9-py3.13-wolfiis throwing an error:

api-1 | 2026-01-27T00:22:22.625369Z [info ] Waiting for gRPC server to be ready [langgraph_api.grpc.client] api_revision=c7e8ea3 api_variant=licensed interval_seconds=0.5 langgraph_api_version=0.7.9 max_attempts=20 thread_name=ThreadPoolExecutor-2_1 timeout_seconds=10.0
api-1 | 2026-01-27T00:22:32.161799Z [error ] Traceback (most recent call last):
api-1 | File “/api/langgraph_api/grpc/client.py”, line 280, in wait_until_grpc_ready
api-1 | File “/api/langgraph_api/grpc/client.py”, line 115, in healthcheck
api-1 | File “/usr/lib/python3.13/site-packages/grpc/aio/_call.py”, line 328, in await
api-1 | raise _create_rpc_error(
api-1 | …<2 lines>…
api-1 | )
api-1 | grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with:
api-1 | status = StatusCode.UNAVAILABLE
api-1 | details = “failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:50051: Failed to connect to remote host: connect: Connection refused (111)”
api-1 | debug_error_string = “UNKNOWN:Error received from peer {grpc_status:14, grpc_message:“failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:50051: Failed to connect to remote host: connect: Connection refused (111)”}”
api-1 | >
api-1 |
api-1 | The above exception was the direct cause of the following exception:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File “/usr/lib/python3.13/site-packages/starlette/routing.py”, line 694, in lifespan
api-1 | async with self.lifespan_context(app) as maybe_state:
api-1 | ~~~~~~~~~~~~~~~~~~~~~^^^^^
api-1 | File “/usr/lib/python3.13/contextlib.py”, line 214, in aenter
api-1 | return await anext(self.gen)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File “/api/langgraph_api/timing/timer.py”, line 227, in combined_lifespan
api-1 | File “/usr/lib/python3.13/contextlib.py”, line 668, in enter_async_context
api-1 | result = await _enter(cm)
api-1 | ^^^^^^^^^^^^^^^^
api-1 | File “/usr/lib/python3.13/contextlib.py”, line 214, in aenter
api-1 | return await anext(self.gen)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File “/usr/lib/python3.13/site-packages/langgraph_runtime_postgres/lifespan.py”, line 101, in lifespan
api-1 | await wait_until_grpc_ready()
api-1 | File “/api/langgraph_api/grpc/client.py”, line 289, in wait_until_grpc_ready
api-1 | RuntimeError: gRPC server not ready after 10.0s (reached max attempts: 20)
api-1 | [uvicorn.error] api_revision=c7e8ea3 api_variant=licensed langgraph_api_version=0.7.9 thread_name=MainThread
api-1 | 2026-01-27T00:22:32.161924Z [error ] Application startup failed. Exiting. [uvicorn.error] api_revision=c7e8ea3 api_variant=licensed langgraph_api_version=0.7.9 thread_name=MainThread
api-1 | 2026-01-27T00:22:32.162196Z [info ] Checkpointer ingestion task cancelled. Draining queue. [langgraph_runtime_postgres.checkpoint] api_revision=c7e8ea3 api_variant=licensed langgraph_api_version=0.7.9 thread_name=ThreadPoolExecutor-2_1

Thanks for the stacktrace! What environment variables are overriding here, if any? And are you setting any dockerfile_lines or other low-level customizations?

1 Like

I have env vars for redis and postgres referencing resources in docker compose:

DATABASE_URI=postgres://postgres:postgres@postgres:5432/postgres?sslmode=disable

REDIS_URI=redis://redis:6379

Found Issue, had an override for launching uvicorn with SSL enabled which bypassed the newly added entrypoint.sh so the go binary was not being launched.