Проблемы Django и Postgres при докеризации

Здравствуйте, я не могу докеризировать мое приложение django, потому что я получил ошибку -

listen tcp4 0.0.0.0:5433: bind: address already in use

С другой стороны, когда я "убиваю" порт 5433 в терминале ubuntu, я получаю эту ошибку

Is the server running on host "localhost" (::1) and accepting
web_1  |        TCP/IP connections on port 5433?

Что я могу сделать для решения этой проблемы и успешной докеризации моего приложения? Dockerfile

FROM python:3

RUN adduser --system --no-create-home django

ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
ENV PYTHONPATH /code



EXPOSE 8000
USER django

CMD ["./main.py"]

docker-compose

version: "3"
   
services:
  

    db:
        image: postgres
        volumes:
          - ./data/db:/var/lib/postgresql/data
        environment:
          - POSTGRES_DB=fitshop
          - POSTGRES_USER=fituser
          - POSTGRES_PASSWORD=fitpass
        ports:
          - "5433:5433"
      web:
        build: .
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
          - .:/code
        restart: always
        ports:
          - "8000:8000"
        depends_on:
          - db

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'fitshop',
        'USER': 'fituser',
        'PASSWORD': 'fitpass',
        'HOST': 'localhost',
        'PORT': '5433',
    }
}

Вы должны использовать "db" в качестве хоста. В установке docker-compose каждый сервис запускается в отдельном контейнере, а конфигурация /etc/hosts всех контейнеров изменяется таким образом, чтобы каждый контейнер мог найти другие контейнеры по именам сервисов.

У меня получилось! На 'localhost' порт postgres был 5433, но для 'db' как HOST он был по умолчанию, 5432.

Вернуться на верх