• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

docker 컨테이너 환경설정 문제

24.03.03 21:00 작성 조회수 341

0

docker 컨테이너를 바로 생성하지 않고 따로 실행하는 걸로 했을때 아래와 같은 실행화면까지 나오고 잠시후에 에러메세지가 뜨는데 여기서 더이상 방법을 못찾아서 헤매고 있습니다 ㅎㅎ 윈도우라서 그런건 아니겠죠?

[I 240227 01:42:46 command:177] Registered tasks:

['celery.accumulate',

'celery.backend_cleanup',

'celery.chain',

'celery.chord',

'celery.chord_unlock',

'celery.chunks',

'celery.group',

'celery.map',

'celery.starmap']

[E 240227 01:42:54 events:191] Failed to capture events: 'Error 11001 connecting to redis:6379. getaddrinfo failed.', trying again in 2 seconds.

[E 240227 01:42:54 base_events:1771] Future exception was never retrieved

 

따로 실행하는 이유는 처음에 docker-compose up --build -d 해서 생성할때 flower에서

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "flower": executable file not found in $PATH: unknown

에러가 발생해서 찾아보니 따로 실행하면 된다고 그래서 현재 따로 실행중에있습니다.

 

version: '3'

services:
  app:
    build: ./python_app
    volumes:
      - ./python_app:/usr/src/app
    ports:
      - "8000:8000" # 필요한 경우, 앱이 외부에 노출할 포트를 지정

  redis:
    image: "redis:alpine"

  celery_worker:
    build: ./python_app
    command: celery -A tasks worker --loglevel=info
    volumes:
      - ./python_app:/usr/src/app
    depends_on:
      - redis

  celery_beat:
    build: ./python_app
    command: celery -A tasks beat --loglevel=info
    volumes:
      - ./python_app:/usr/src/app
    depends_on:
      - redis

  flower:
    image: mher/flower
    command: flower --broker=redis://redis:6379/0 --port=5555
    ports:
      - "5555:5555"
    depends_on:
      - redis

답변 1

답변을 작성해보세요.

0

안녕하세요 chicmania님,

다음의 에러는 docker에서 컨테이너를 만들 때 flower라는 커맨드를 flower 컨테이너에서 찾지 못해서 생기는 에러입니다. flower 서비스가 redis만 필요로 하니 일단 redis와 flower만 빼고 나머지는 주석을 달아 실행을 미루세요

Error response from daemon: failed to create task for container: 
failed to create shim task: OCI runtime create failed: runc create failed: 
unable to start container process: exec: "flower": executable file not found 
in $PATH: unknown

 

그리고 다음의 에러는 redis를 그 flower컨테이너에서 액세스를 할 수가 없어서 그런 겁니다. redis가 같은 네트워크에 있다면 아무런 문제가 없어 보이는데, 제 생각에는 redis가 서비스를 시작을 안해서 그런 것 같습니다. 이런 경우에는 일단 redis가 잘 작동하는지, 나머지는 다 주석을 하시고, redis 부분만 한번 실행해보세요. redis가 잘 실행 된다면 그 다음에 flower 서비스부분 주석을 제거하고 실행해보세요.

[E 240227 01:42:54 events:191] Failed to capture events: 'Error 11001 connecting to redis:6379. getaddrinfo failed.', trying again in 2 seconds.

[E 240227 01:42:54 base_events:1771] Future exception was never retrieved

 

혹시 docker ps 명령어를 사용하셔서, 혹시 다른 redis가 벌써 돌고 있지는 않은지 확인하시고, 뭔가 다른 것이 있다면docker kill을 사용해서 다 지우시고 실행해보세요.

 

마지막으로 compose를 설명해 드리자면 ...

 flower:
    image: mher/flower
    command: flower --broker=redis://redis:6379/0 --port=5555 <===== 여기 redis:6379가 redis라는 서비스 이름으로 6379포트로 연결하라라는 뜻인데, redis가 없다면 연결을 못하고 위의 에러가 납니다. 
    ports:
      - "5555:5555"
    depends_on:   <====== redis를 시작한 후에 시작을 하라라는 뜻입니다.
      - redis

 

이것도 아니라면 제가 현재 chicmania님의 랩탑을 보지 않아서 안타깝게도 알 수가 없습니다.

도움이 되어서 해결이 되었으면 좋겠네요.

chicmania님의 프로필

chicmania

질문자

2024.03.06

답변 감사합니다!