django - спам netcat в контейнере docker - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь запустить сельдерей в отдельном контейнере docker вместе с настройкой django / redis docker.

Когда я запускаю docker-compose up -d --build, мои журналы через docker-compose logs --tail=0 --follow показывают, что контейнер celery_1 много раз спамит консоль с помощью

Usage: nc [OPTIONS] HOST PORT  - connect
nc [OPTIONS] -l -p PORT [HOST] [PORT]  - listen
    -e PROG Run PROG after connect (must be last)
    -l  Listen mode, for inbound connects
    -lk With -e, provides persistent server
    -p PORT Local port
    -s ADDR Local address
    -w SEC  Timeout for connects and final net reads
    -i SEC  Delay interval for lines sent
    -n  Don't do DNS resolution
    -u  UDP mode
    -v  Verbose
    -o FILE Hex dump traffic
    -z  Zero-I/O mode (scanning)

Я могу заставить работать сельдерей правильно, удалив обслуживание сельдерея от docker-compose.yaml и ручной запуск docker exec -it backend_1 celery -A proj -l info после docker-compose up -d --build. Как мне воспроизвести функциональность этого ручного процесса в docker-compose.yaml?

Мой docker-compose.yaml выглядит как

version: '3.7'

services:
  backend:
    build: ./backend
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./backend/app/:/usr/src/app/
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev
    depends_on:
      - db
      - redis
    links:
      - db:db
   celery:
     build: ./backend
     command: celery -A proj worker -l info
     volumes:
       - ./backend/app/:/usr/src/app/
     depends_on:
       - db
       - redis
  redis:
    image: redis:5.0.6-alpine
    command: redis-server
    expose:
      - "6379"
  db:
    image: postgres:12.0-alpine
    ports:
      - 5432:5432
    volumes:
      - /tmp/postgres_data:/var/lib/postgresql/data/

1 Ответ

0 голосов
/ 13 февраля 2020

Я обнаружил, что проблема в том, что моя служба сельдерея не может разрешить хост SQL. Это произошло потому, что мой SQL хост определен в .env.dev, к которому у службы celery не было доступа. Я добавил

env_file:
      - ./.env.dev

в службу сельдерея, и все заработало как положено.

...