2017-10-09 18 views
1

두 개의 고정 컨테이너 (nginx 및 php-fpm)가 있습니다.자체 포함 된 nginx 및 php-fpm 컨테이너를 올바르게 작성하는 방법

프로덕션을 위해 자체 포함 (컨테이너는 빌드에서 git의 복제본을 복제합니다)하고 싶습니다. 하지만 Repo를 복제 한 후 프로젝트 폴더에 composer install 같은 초기 작업을해야합니다. 나는 PHP를 가지고 있기 때문에 나는 php-fpm 컨테이너 안에서 그것을 할 수있다. 하지만 nginx 컨테이너에서 코드를 준비하는 방법? 나는 작곡가를 위해 PHP가 없다.

동일한 초기화 된 폴더를 두 컨테이너에 모두 마운트하면 모든 것이 잘됩니다.

어쩌면 내가 뭘 잘못하고 있어요, nginx + php-fpm 용 자체 포함 된 컨테이너를 수행하는 가장 좋은 방법은 무엇입니까?

server { 
    listen  80; 
    server_name localhost; 

    index index.php index.html; 

    # I need only /api/ path 
    location /api/ { 
     try_files $uri $uri/ /index.php?$query_string; 
    } 

    location ~ \.php$ {  
     root /var/www/public; 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass api:9000; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param PATH_INFO $fastcgi_path_info; 
    } 
} 

답변

1

당신 만 FPM 서버의 PHP 파일이 있어야합니다 들어

는 지금이 nginx를-설정을 가지고있다. 이전에 언급했듯이, PHP를 사용하여 해당 서버에서 작곡가를 실행해야합니다. nginx 서버에는 PHP 파일이 필요 없습니다. SCRIPT_FILENAME은 웹 프록시에 위치가 없도록 CGI 서버에서 확인됩니다. nginx 서버에 설정을 변경해야하는 경우, Salt, Chef 또는 Puppet과 같은 좀 더 시스템 지향적 인 것을 사용하고 싶을 것입니다.

location ~ \.php$ { 
    # This is the webserver root for static junk 
    root /var/www/public; 
    ... 
    # Point this somewhere else if the docroot is in a different location on the FPM server. 
    fastcgi_param SCRIPT_FILENAME /home/php-fpm/wwwroot/$fastcgi_script_name; 
} 
+1

감사합니다. 귀하의 답변이 도움이되었습니다. 처음부터 시작한 다음 nginx 및 fpm을 올바르게 설정할 수있었습니다. –