sunwoo1524

joined 1 year ago
[–] [email protected] 1 points 1 year ago

Thanks!
I also added

depends_on:
      - db

to docker-compose.yaml and fixed the issue!

[–] [email protected] 1 points 1 year ago (2 children)

I changed host to postgres:5432, but python made an error.

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name "postgres" to address: Temporary failure in name resolution
 

FastAPI container fails to connect to PostgreSQL.
However, the PostgreSQL container is running well and accessible.
I don't know why this problem is happening.
Here is gist link of Dockerfile, docker-compose.yaml and log when docker-compose is run. https://gist.github.com/sunwoo1524/9f75b4d3fd295c9829705e23a3b8094d

[–] [email protected] 4 points 1 year ago (1 children)

Thanks to you, I solved the problem!

 

I ran Python, FastAPI, and PostgreSQL as docker-compose, but it doesn't work with these errors.
I don't know why this error occurs.
Full Error Message:

learn-fastapi-web-1  | Traceback (most recent call last):
learn-fastapi-web-1  |   File "<frozen runpy>", line 198, in _run_module_as_main
learn-fastapi-web-1  |   File "<frozen runpy>", line 88, in _run_code
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/__main__.py", line 4, in <module>
learn-fastapi-web-1  |     uvicorn.main()
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
learn-fastapi-web-1  |     return self.main(*args, **kwargs)
learn-fastapi-web-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1078, in main
learn-fastapi-web-1  |     rv = self.invoke(ctx)
learn-fastapi-web-1  |          ^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
learn-fastapi-web-1  |     return ctx.invoke(self.callback, **ctx.params)
learn-fastapi-web-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/click/core.py", line 783, in invoke
learn-fastapi-web-1  |     return __callback(*args, **kwargs)
learn-fastapi-web-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 416, in main
learn-fastapi-web-1  |     run(
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/main.py", line 587, in run
learn-fastapi-web-1  |     server.run()
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
learn-fastapi-web-1  |     return asyncio.run(self.serve(sockets=sockets))
learn-fastapi-web-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
learn-fastapi-web-1  |     return runner.run(main)
learn-fastapi-web-1  |            ^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
learn-fastapi-web-1  |     return self._loop.run_until_complete(task)
learn-fastapi-web-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "uvloop/loop.pyx", line 1517, in uvloop.loop.Loop.run_until_complete
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
learn-fastapi-web-1  |     config.load()
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load
learn-fastapi-web-1  |     self.loaded_app = import_from_string(self.app)
learn-fastapi-web-1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string
learn-fastapi-web-1  |     module = importlib.import_module(module_str)
learn-fastapi-web-1  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
learn-fastapi-web-1  |     return _bootstrap._gcd_import(name[level:], package, level)
learn-fastapi-web-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
learn-fastapi-web-1  |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
learn-fastapi-web-1  |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
learn-fastapi-web-1  |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
learn-fastapi-web-1  |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
learn-fastapi-web-1  |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
learn-fastapi-web-1  |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
learn-fastapi-web-1  |   File "/main.py", line 5, in <module>
learn-fastapi-web-1  |     from . import crud, models, schemas
learn-fastapi-web-1  | ImportError: attempted relative import with no known parent package

Dockerfile:

FROM python:latest
COPY . .
RUN pip install -r requirements.txt
CMD python -m uvicorn --host=0.0.0.0 main:app