Search code examples
pythondjangodockerdocker-composeredis

Where docker gets the worker from if it is not specified in the compose file (it was before, but deleted and docker still pulls it)


I want to run the application from docker, there was a problem that worker_1 connects to localhost, but a different address was specified in the env

.env

DATABASE_URL=postgres://db_user:db_password@db/db_name
#DATABASE_URL=postgres://postgres:[email protected]/olx-killer
# Redis
#REDIS_URL=redis://localhost:6379
REDIS_URL=redis://redis:6379

I decided to comment out everything related to redis and celery both in settings and env, also deleted worker from docker compose file, but it still takes it from somewhere and tries to connect to local host.

settings.py

# Redis
#REDIS_URL = os.getenv('REDIS_URL', 'redis://redis:6379/')
#REDIS_CACHE_URL = f'{REDIS_URL}/1'


# Celery
#CELERY_TIMEZONE = TIME_ZONE
#CELERY_TASK_TRACK_STARTED = True
#CELERY_BROKER_URL = REDIS_URL
#CELERY_RESULT_BACKEND = None
#CELERY_TASK_SERIALIZER = 'json'
#CELERY_RESULT_SERIALIZER = 'json'
#CELERY_ACCEPT_CONTENT = ['json']

docker-compose.yml

volumes:
  pg_data:
    driver: local

x-base: &base-backend
  build: .
  volumes:
    - .:/code:delegated
  depends_on:
    - db

services:
  backend:
    <<: *base-backend
    ports:
      - "8000:8000"
    env_file: .env
    environment:
      - DJANGO_SETTINGS_MODULE=settings.main
    entrypoint: ["/code/entrypoint.sh"]
    depends_on:
      - db
    restart: unless-stopped

  db:
    image: postgres:13
    volumes:
      - "pg_data:/var/lib/postgresql/data"
    environment:
      POSTGRES_DB: db_name
      POSTGRES_USER: db_user
      POSTGRES_PASSWORD: db_password
    ports:
      - "5432:5432"
    restart: unless-stopped

Traceback

db_1       | 2025-02-06 17:22:20.576 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1       | 2025-02-06 17:22:20.577 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1       | 2025-02-06 17:22:20.581 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1       | 2025-02-06 17:22:20.588 UTC [63] LOG:  database system was shut down at 2025-02-06 17:22:20 UTC
db_1       | 2025-02-06 17:22:20.596 UTC [1] LOG:  database system is ready to accept connections
worker_1   | /usr/local/lib/python3.12/site-packages/celery/platforms.py:829: SecurityWarning: You're running the worker with superuser privileges: this is
worker_1   | absolutely not recommended!
worker_1   | 
worker_1   | Please specify a different user using the --uid option.
worker_1   | 
worker_1   | User information: uid=0 euid=0 gid=0 egid=0
worker_1   | 
worker_1   |   warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
worker_1   |  
worker_1   |  -------------- celery@7625f54ed8c5 v5.4.0 (opalescent)
worker_1   | --- ***** ----- 
worker_1   | -- ******* ---- Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36 2025-02-06 19:22:26
worker_1   | - *** --- * --- 
worker_1   | - ** ---------- [config]
worker_1   | - ** ---------- .> app:         OLX Clone:0x7f7e62f015b0
worker_1   | - ** ---------- .> transport:   redis://localhost:6379//
worker_1   | - ** ---------- .> results:     disabled://
worker_1   | - *** --- * --- .> concurrency: 12 (prefork)
worker_1   | -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
worker_1   | --- ***** ----- 
worker_1   |  -------------- [queues]
worker_1   |                 .> celery           exchange=celery(direct) key=celery
worker_1   |                 
worker_1   | 
worker_1   | [tasks]
worker_1   |   . delete_product_file
worker_1   | 
worker_1   | [2025-02-06 19:22:28,120: WARNING/MainProcess] /usr/local/lib/python3.12/site-packages/celery/worker/consumer/consumer.py:508: CPendingDeprecationWarning: The broker_connection_retry configuration setting will no longer determine
worker_1   | whether broker connection retries are made during startup in Celery 6.0 and above.
worker_1   | If you wish to retain the existing behavior for retrying connections on startup,
worker_1   | you should set broker_connection_retry_on_startup to True.
worker_1   |   warnings.warn(
worker_1   | 
worker_1   | [2025-02-06 19:22:28,124: ERROR/MainProcess] consumer: Cannot connect to redis://localhost:6379//: Error 99 connecting to localhost:6379. Cannot assign requested address..
worker_1   | Trying again in 2.00 seconds... (1/100)
worker_1   | 
worker_1   | [2025-02-06 19:22:30,197: ERROR/MainProcess] consumer: Cannot connect to redis://localhost:6379//: Error 99 connecting to localhost:6379. Cannot assign requested address..
worker_1   | Trying again in 4.00 seconds... (2/100)
worker_1   | 
backend_1  | Traceback (most recent call last):
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 279, in ensure_connection
backend_1  |     self.connect()
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
backend_1  |     return func(*args, **kwargs)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 256, in connect
backend_1  |     self.connection = self.get_new_connection(conn_params)
backend_1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
backend_1  |     return func(*args, **kwargs)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/postgresql/base.py", line 350, in get_new_connection
backend_1  |     connection = self.Database.connect(**conn_params)
backend_1  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/psycopg2/__init__.py", line 122, in connect
backend_1  |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  | psycopg2.OperationalError: connection to server at "127.0.0.1", port 5432 failed: Connection refused
backend_1  |    Is the server running on that host and accepting TCP/IP connections?
backend_1  | 
backend_1  | 
backend_1  | The above exception was the direct cause of the following exception:
backend_1  | 
backend_1  | Traceback (most recent call last):
backend_1  |   File "/code/manage.py", line 23, in <module>
backend_1  |     main()
backend_1  |   File "/code/manage.py", line 19, in main
backend_1  |     execute_from_command_line(sys.argv)
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
backend_1  |     utility.execute()
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
backend_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 413, in run_from_argv
backend_1  |     self.execute(*args, **cmd_options)
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 459, in execute
backend_1  |     output = self.handle(*args, **options)
backend_1  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/core/management/commands/showmigrations.py", line 67, in handle
backend_1  |     return self.show_list(connection, options["app_label"])
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/core/management/commands/showmigrations.py", line 86, in show_list
backend_1  |     loader = MigrationLoader(connection, ignore_no_migrations=True)
backend_1  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/migrations/loader.py", line 58, in __init__
backend_1  |     self.build_graph()
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/migrations/loader.py", line 235, in build_graph
backend_1  |     self.applied_migrations = recorder.applied_migrations()
backend_1  |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/migrations/recorder.py", line 89, in applied_migrations
backend_1  |     if self.has_table():
backend_1  |        ^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/migrations/recorder.py", line 63, in has_table
backend_1  |     with self.connection.cursor() as cursor:
backend_1  |          ^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
backend_1  |     return func(*args, **kwargs)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 320, in cursor
backend_1  |     return self._cursor()
backend_1  |            ^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 296, in _cursor
backend_1  |     self.ensure_connection()
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
backend_1  |     return func(*args, **kwargs)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 278, in ensure_connection
backend_1  |     with self.wrap_database_errors:
backend_1  |          ^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/utils.py", line 91, in __exit__
backend_1  |     raise dj_exc_value.with_traceback(traceback) from exc_value
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 279, in ensure_connection
backend_1  |     self.connect()
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
backend_1  |     return func(*args, **kwargs)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/base.py", line 256, in connect
backend_1  |     self.connection = self.get_new_connection(conn_params)
backend_1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
backend_1  |     return func(*args, **kwargs)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/django/db/backends/postgresql/base.py", line 350, in get_new_connection
backend_1  |     connection = self.Database.connect(**conn_params)
backend_1  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  |   File "/usr/local/lib/python3.12/site-packages/psycopg2/__init__.py", line 122, in connect
backend_1  |     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
backend_1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend_1  | django.db.utils.OperationalError: connection to server at "127.0.0.1", port 5432 failed: Connection refused
backend_1  |    Is the server running on that host and accepting TCP/IP connections?
backend_1  | 

I tried deleting all the images

docker-compose down --volumes --remove-orphans docker system prune -a --volumes but it doesn't work.


Solution

  • The problem was solved by reinstalling the docker and restarting the computer