Почему в docker падает приложение?
При выполнении команды docker compose up
база данных разворачивается без проблем, но далее при разворачивании бекэнда выдает ошибку
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "0.0.0.0", port 5432 failed: Connection refused
menu_app | Is the server running on that host and accepting TCP/IP connections?
Я так понимаю, что бекэнд не может подключиться к БД через порт 5432. Как мне это исправить?
# docker-compose.yaml
version: "3.8"
services:
db:
container_name: db
image: postgres:15.1-alpine
environment:
POSTGRES_DB: "postgres"
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
networks:
- app_network
expose:
- "5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -d postgres -U postgres"]
interval: 10s
timeout: 3s
retries: 5
app:
container_name: menu_app
build:
context: .
dockerfile: Dockerfile
entrypoint: >
sh -c "
echo 'Making migrations...' &&
alembic upgrade head &&
echo 'Starting project...' &&
python app/main.py
"
networks:
- app_network
ports:
- 8000:8000
depends_on:
db:
condition: service_healthy
networks:
app_network:
name: app_network
# Dockerfile
FROM python:3.10-slim
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apt-get update -y
EXPOSE 8000
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt --no-cache-dir
CMD ["python", "app/main.py"]
# main.py
# some code
if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1")
# session.py
# some code
SQLALCHEMY_DATABASE_URL = "postgresql+psycopg2://postgres:postgres@db:5432/postgres"
# some code
Источник: Stack Overflow на русском