Docker Django Работает ли сервер на этом хосте и принимает ли он TCP/IP-соединения?

Я запускаю Django приложение на Docker контейнере, проблема в том, что оно не видит, что соединение с базой данных уже установлено.

Dockerfile

FROM ubuntu

RUN apt-get update

# Avoid tzdata infinite waiting bug
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Africa/Cairo

RUN apt-get install -y apt-utils vim curl apache2 apache2-utils
RUN apt-get -y install python3 libapache2-mod-wsgi-py3
RUN apt -y install certbot python3-certbot-apache
RUN ln /usr/bin/python3 /usr/bin/python
RUN apt-get -y install python3-pip
RUN apt -y install software-properties-common
RUN add-apt-repository universe
RUN apt update
RUN ln -sf /usr/bin/pip3 /usr/bin/pip
RUN pip install --upgrade pip
RUN pip install django ptvsd
RUN apt install wait-for-it
RUN a2enmod headers
RUN service apache2 restart
COPY www/demo_app/water_maps/requirements.txt requirements.txt
RUN pip install -r requirements.txt
ADD ./demo_site.conf /etc/apache2/sites-available/000-default.conf
EXPOSE 80 5432
WORKDIR /var/www/html/demo_app

docker-compose.yaml

version: "2"

services:

  db:
    image: postgres
    restart: always 
    volumes:
      - ./data/db:/var/lib/postgresql/data
    ports:
      - '5332:5432'
    environment:
      - POSTGRES_DB=(db name here)
      - POSTGRES_USER=(db user here)
      - POSTGRES_PASSWORD=(db password here)
  django-apache2:
    build: .
    container_name: test_water_maps
    
    restart: always 
    environment:
      - POSTGRES_DB=(db name here)
      - POSTGRES_USER=(db user here)
      - POSTGRES_PASSWORD=(db password here)
    ports:
      - 5000:80
      - 5001:443
    volumes:
      - ./www/:/var/www/html
      - ./www/demo_app/kml_files:/var/www/html/demo_app/kml_files
      - ./www/demo_app/temp_kml_file:/var/www/html/demo_app/temp_kml_file
      - ./www/demo_app/upload:/var/www/html/demo_app/upload
    command: sh -c 'wait-for-it db:5432 -- python manage.py migrate && apache2ctl -D FOREGROUND'
    # command: sh -c 'wait-for-it db:5432 -- python manage.py migrate && python manage.py loaddata last.json && apache2ctl -D FOREGROUND'

    depends_on:
      - db


Settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('POSTGRES_DB'),
        'USER': os.environ.get('POSTGRES_USER'),
        'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
        'HOST': 'db',
        'PORT': 5332,
    }
}

попробуйте этот способ:

ports:
      - '5432:5332'

И в settings.py:

'PORT': 5432,

Порт приложения для базы данных должен быть по умолчанию 5432

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