'Не удалось установить новое соединение: [Errno 111] Connection refused'

Я пытаюсь запустить приложение django с базой данных postgres на docker-compose. Я могу запустить его идеально, но как только я делаю пост-запрос, я получаю эту ошибку:

FAILED tests/test_email.py::TestUser::test_list_to - requests.exceptions.ConnectionError: HTTPConnectionPool(host='172.17.0.1', port=8080): Max retries exceeded with url: /api/v1/customers/516c7146-afc0-463b-be0e-7df01e8a86f6/emails (Вызвано NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ff6544eada0>: Failed to establish a new connection: [Errno 111] Connection refused'))

Вот мой файл docker-compose:

version: "3"
services:
  db:
    image: postgres:latest
    restart: always
    environment:
      POSTGRES_PASSWORD: verySecretPassword
      POSTGRES_USER: administrator
      POSTGRES_DB: project
    volumes:
      - ./data/db:/var/lib/postgresql/data

  web:
    build: .
    restart: always
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      DATABASE_URL: postgresql://administrator:verySecretPassword@db:5432/project
    volumes:
      - .:/app

вот мой Dockerfile:

# Use the official Python image as a base image
FROM python:3.10

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set the working directory
WORKDIR /app

# Install Django and Django REST Framework
RUN pip install --no-cache-dir django djangorestframework

# Install system dependencies for psycopg2 (PostgreSQL client)
RUN apt-get update && \
    apt-get install -y postgresql-client

# Copy the requirements file and install dependencies
COPY requirements.txt /app/

RUN pip install --no-cache-dir -r requirements.txt

# Copy the Django project files to the container
COPY . /app/

# Install system dependencies for psycopg2 (if necessary)
RUN apt-get update && \
    apt-get install -y libpq-dev gcc

# Install psycopg2 (or psycopg2-binary)
RUN pip install --no-cache-dir psycopg2-binary==2.8.6

# Copy the input.json file to the container
COPY input/input.json /app/input/


EXPOSE 8080


# Run Django development server
# CMD ["python3", "manage.py", "runserver", "0.0.0.0:8080"]
CMD ["bash", "-c", "sleep 10 && python3 manage.py makemigrations && python3 manage.py migrate && python3 manage.py runserver 0.0.0.0:8080"]

Мой файл settings.py (только часть DATABASES)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'assignment',
        'USER': 'administrator',
        'PASSWORD': 'verySecretPassword',
        'HOST': 'db',
        'PORT': '5432',
    }
}

Есть идеи? Заранее спасибо

попробуйте добавить это в ваш файл compose. Я устанавливаю переменные окружения в файле .env.

db:
    image: postgres:latest
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_HOST_AUTH_METHOD=trust
    env_file:
      - ./.env
Вернуться на верх