2015-01-25 2 views
0

저는 Docker 초보자이고 내 자신의 이미지를 빌드하려고합니다. Ubuntu + Nginx + PHP.Docker 컨테이너의 Nginx가 PHP를 실행하지 않습니다

따라서 이라는 디렉토리가 있습니다. 디렉터리 안의 다른 두 디렉터리 인 이 있습니다. 또한 콘텐츠가 포함 된 Dockerfile이 있습니다.

FROM ubuntu:trusty 

RUN apt-get update && \ 
    apt-get install -y nginx php5-fpm php5-mysql php-apc php5-imagick php5-imap php5-mcrypt php5-gd libssh2-php && \ 
    apt-get clean && \ 
    rm -rf /var/lib/apt/lists/* 

RUN echo "daemon off;" >> /etc/nginx/nginx.conf 
ADD sites-enabled/ /etc/nginx/sites-enabled/ 
ADD app/ /app/ 

EXPOSE 80 
CMD ["php5-fpm", "-c", "/etc/php5/fpm"] 
CMD ["/usr/sbin/nginx"] 

이 이미지를 성공적으로 빌드합니다. 그런 다음 docker run -d image_name으로 컨테이너를 만듭니다. ID를 얻은 다음 컨테이너의 IP 주소를 얻으려면 docker inspect -f "{{.NetworkSettings.IPAddress}}" ID을 실행합니다.

또 다른 컨테이너에서 HAProxy를 실행하기 때문에이 IP 주소가 필요하므로 올바른 localtion을 가리 키도록 구성 할 수 있습니다.

그래서 PHP 앱이있는 HAProxy와 컨테이너가 모두 정상적으로 실행되고 있습니다. HAProxy는 올바른 애플리케이션을 가리키고 있습니다. PHP 응용 프로그램 파일은 컨테이너 내부의 올바른 위치에 업로드됩니다.

그러나 Nginx는 PHP를 실행하지 않습니다. 대신 응용 프로그램에 액세스하려고 할 때 index.php PHP 코드로 다운로드 한 파일 만 가져옵니다.

무엇이 문제 일 수 있습니까? 도와주세요.

내 첫 번째 추측은 php5-fpm을 실행할 때 Dockerfile에서 잘못된 것을하고 있다는 것이 었습니다. 몇 가지 방법을 시도했지만 그 중 일부는 작동하지 않는 것 같습니다.

답변

2

하나만 CMD.

"서비스"가 필요한 경우 supervisord 또는 runit을 확인하십시오.

+0

대단히 감사합니다. 어쨌든 나는 그 부분을 놓쳤습니다. supervisord를 호출하는 Dockerfile의 끝에 bash 스크립트를 실행하여이 문제를 해결했습니다. – jolenzy