Dockerfile에서 두 개의 CMD 서비스 실행

Dockerfile에서 두 개의 CMD 서비스 실행

2개의 CMD 명령을 실행할 수 있는지 묻고 싶습니다. 2개의 CMD 명령을 입력하면 마지막 명령만 실행됩니다. 내가 시도한 것은 다음과 같습니다.

CMD bash /start-script.sh && /usr/bin/supervisord -c /etc/supervisord.conf

하지만 이 두 서비스는 실행되지 않습니다.

여기는 따로 있어요CMD

CMD ["/start-script.sh"]
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "/usr/bin/supervisord", "-c", "/etc/supervisord.conf" ]

답변1

귀하의 접근 방식이 Docker의 모범 사례를 다소 벗어나므로 여기서 무엇을 하려는지 생각해 보십시오.

간단히 말해서, Docker 모범 사례는 두 개의 애플리케이션을 시작하지 말고, Docker 컨테이너에서 하나의 애플리케이션만 시작해야 한다는 것입니다. 이 조언은 애플리케이션이 종료될 때 docker가 컨테이너를 중지하기 때문에 의미가 있습니다. 하나 이상 있으면 기본적으로 망가집니다.

하지만...도움이 될 수 있는 몇 가지 해결 방법이 있습니다.

  • 간단합니다. 두 개의 애플리케이션을 시작하는 단일 셸 스크립트를 시작한 다음 끝없는 루프에 들어갑니다.

  • 여러 애플리케이션/서비스를 병렬로 처리할 수 있는 Supervisord와 같은 솔루션을 사용하세요.

두 솔루션에 대한 문서는 여기에서 찾을 수 있습니다.https://docs.docker.com/config/containers/multi-service_container/

개인적으로 선호하는 것은 공유 볼륨과 별도의 Docker 컨테이너를 사용하는 것입니다. (여전히 docker-compose를 사용하여 서로 붙일 수 있습니다.) 이를 사용하면 모든 애플리케이션을 완전히 제어할 수 있으며 매우 간단하고 간단합니다.

관련 정보