내 컨테이너를 실행하는 데 docker
에 docker-compose
을 사용합니다. 두 서비스 - celerybeat
과 web
중 하나 (다른 서비스가 있지만 내 문제가 있기 때문에이 서비스 만 고려함)가 있습니다.도커의 공유 이미지 볼륨 탑재 오류
docker-compose.yml
파일은 다음과 같습니다 :
.
.
.
celerybeat:
image: web-image
volumes:
- /home/ubuntu/celerybeat:/code/celerybeat
command: >
/bin/ash -c "su -m celery -c 'celery -A <application_here> beat -s /code/celerybeat/celerybeat-schedule'"
web:
image: web-image
volumes:
- /home/ubuntu/celerybeat:/code/celerybeat
command: >
<some_command_to_run_server>
내 Dockerfile
나는 적절한 권한
RUN mkdir celerybeat
RUN touch celerybeat/celerybeat-schedule
RUN chown -R celery:celery celerybeat
참고 이러한 명령을 추가 한 : 내 작성 파일 구조에서 나는 볼륨 마운트를 제공 한 위 기록 두 컨테이너 모두 (실제로는 한 번에 하나씩 사용하고 있습니다.) 다시 작성 파일을 작성하지 않으려면을 사용하십시오.
문제는 실제로 여기에만 있습니다. 기술적으로 볼륨 탑재는 셀리 비트 서비스에서만 제공되어야합니다. 셀 룰 비트 도커 서비스에서 celerybeat-schedule
의 볼륨 마운트를 쓸 때 permission denied
이됩니다. 반면에 웹 서비스에서 볼륨 마운트 명령을 작성할 때 celerybeat 서비스가 행복하게 시작됩니다. 아무도 나에게 설명 할 수있는 일이 여기 무엇입니까? 나는 이것을 위해 수정이 필요하다.
웹 서비스 celerybeat 서비스에서 볼륨 마운트 명령을 쓰고 행복하게 시작한다고 말하면 정확히 실행중인 명령은 무엇입니까? – bluescores
그래도이 문제를 이해할 수는 없지만 문제가 해결되었습니다. 문제는 내가 샐러리 사용자로 비트 서비스를 시작하라는 명령을 실행하고 있다는 것이 었습니다.그러나'su -m celery -c' 비트를 추가하지 않고 서비스를 시작했을 때 작동했습니다. 이 문제가 발생하는 이유는 무엇입니까? –