ValueError: Port could not be cast to integer value as '${DOCKER_POSTGRES_PORT}'

Viewed 1866

I'm getting this error whenever I try to initialize a Django website. Any help I would really appreciate it as I've been trying to solve this issue for a long time. Thank you everyone for any help!

Full traceback of the error:

Traceback (most recent call last):
  File "C:\Users\user\Desktop\django-saas-boilerplate-master\manage.py", line 19, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 345, in execute
    settings.INSTALLED_APPS
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\conf\__init__.py", line 83, in __getattr__
    self._setup(name)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\conf\__init__.py", line 70, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\conf\__init__.py", line 177, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\user\Desktop\django-saas-boilerplate-master\conf\settings.py", line 311, in <module>
    DATABASES = {"default": env.db("DATABASE_URL")}
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\environ\environ.py", line 204, in db_url
    return self.db_url_config(self.get_value(var, default=default), engine=engine)
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\environ\environ.py", line 402, in db_url_config
    'PORT': _cast_int(url.port) or '',
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\urllib\parse.py", line 175, in port
    raise ValueError(message) from None
ValueError: Port could not be cast to integer value as '${DOCKER_POSTGRES_PORT}'

This is how URL for postgres is configured:

DOCKER_POSTGRES_PORT=5432
DATABASE_URL=postgresql://${PROJECT_NAME}:${DB_PASSWORD}@localhost:${DOCKER_POSTGRES_PORT}/postgres

This is the docker compose file:

Version: "3.2"

volumes:
  postgres_data: {}
  redis_data: {}

services:
  postgres:
    build: ./devops/docker/postgres
    restart: on-failure
    container_name: ${PROJECT_NAME}_postgres
    image: ${PROJECT_NAME}_postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${PROJECT_NAME}
      POSTGRES_DB: ${PROJECT_NAME}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    command: -c fsync=off -c synchronous_commit=off -c full_page_writes=off
    networks:
      - default
    ports:
      - "5432:5432"

  redis:
    restart: on-failure
    container_name: ${PROJECT_NAME}_redis
    image: ${PROJECT_NAME}_redis
    build:
      context: ./devops/docker/redis/
    volumes:
      - redis_data:/data
    networks:
      - default
    ports:
      - "6379:6379"

  backend:
    image: ${PROJECT_NAME}_backend
    container_name: ${PROJECT_NAME}_backend
    build:
      dockerfile: Dockerfile
      context: ./
    restart: on-failure
    ports:
      - "8000:8000"
    working_dir: /app
    environment:
      - DEBUG=True
      - DATABASE_URL=postgresql://${PROJECT_NAME}:${DB_PASSWORD}@postgres:5432/${PROJECT_NAME}
      - ALLOWED_HOSTS=*
      - SECRET_KEY=notsafeforproduction
      - CORS_ORIGIN_ALLOW_ALL=True
      - RQ_HOST=redis
      - RQ_PORT=${DOCKER_REDIS_PORT}
      - DJANGO_SETTINGS_MODULE=conf.settings
      - PORT=${PORT}
      - HOSTNAME=${HOSTNAME}
    volumes:
      - .:/app
    networks:
      - default
    stdin_open: true
    tty: true
    depends_on:
      - postgres
      - redis
      - rqworkers

  rqworkers:
    image: ${PROJECT_NAME}_rqworkers
    container_name: ${PROJECT_NAME}_rqworkers
    build:
      dockerfile: Dockerfile
      context: .
    restart: always
    working_dir: /app
    environment:
      - DEBUG=True
      - DATABASE_URL=postgresql://${PROJECT_NAME}:${DB_PASSWORD}@postgres:5432/${PROJECT_NAME}
      - ALLOWED_HOSTS=*
      - SECRET_KEY=notsafeforproduction
      - CORS_ORIGIN_ALLOW_ALL=True
      - RQ_HOST=redis
      - RQ_PORT=${DOCKER_REDIS_PORT}
      - DJANGO_SETTINGS_MODULE=conf.settings
      - PORT=${PORT}
      - HOSTNAME=${HOSTNAME}
    volumes:
      - .:/app
    networks:
      - default
    command: /bin/bash -c "python manage.py rqworker default"
    stdin_open: true
    tty: true
    depends_on:
      - postgres
      - redis

networks:
  default:
    ipam:
      driver: default
0 Answers
Related