'Не удалось установить новое соединение: [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