LAMP 스택, Mongo DB 및 자체 서비스를 실행 해야하는 비슷한 요구 사항이 있습니다.
Docker는 OS 기반 가상화이므로 실행중인 프로세스 주위에서 컨테이너를 격리하므로 FOREGROUND에서 실행되는 프로세스가 하나 이상 필요합니다.
따라서 시작점으로 고유 한 시작 스크립트를 제공하므로 시작 스크립트는 확장 된 Docker 이미지 스크립트가되며 , 최종 도큐먼트 서비스 가 시작되는 시점부터 끝까지 너무 많은 서비스를 쌓을 수있는 확장 된 Docker 이미지 스크립트가됩니다.
따라서 Docker 이미지 파일에는 맨 아래에 두 줄이 있습니다.
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
내 스크립트에서 모든 MySQL, MongoDB, Tomcat 등을 실행합니다. 결국 Apache를 포 그라운드 스레드로 실행합니다.
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
이를 통해 모든 서비스를 시작하고 마지막 서비스가 포 그라운드에서 시작된 상태에서 컨테이너를 활성 상태로 유지할 수 있습니다
그것이 도움이되기를 바랍니다.
업데이트 :이 질문에 마지막으로 답변 한 이후 Docker compose 와 같은 새로운 것들이 나타났습니다.이 서비스는 자체 컨테이너에서 각 서비스를 실행하는 데 도움이 될 수 있지만 모든 서비스를 해당 서비스 간의 종속성으로 묶고 docker-compose 및 필요에 맞지 않는 한 더 우아하게 사용하십시오.