도커 설치나 이미지 준비하는것은 웹에 다른 자료도 많으니 일단 생략하고...
무작정 설치하려 했다가 해맸던 부분만 기록 차원에서 적어두려 합니다.
우선 nginx:latest와 php:fpm 이미지를 docker pull 명령을 통해 준비하고
하기와 같이 docker-compose.yml을 작성하고
version: “3.7”
services:
php:
image: php:fpm
restart: unless-stopped
volumes:
- ./var_www_html:/var/www/html
nginx:
image: nginx:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx:/etc/nginx
- ./var_www_html:/var/www/html
nginx의 설정파일이 있는 폴더를
그대로 ./nginx 폴더로 복사하여 실행하게 하였고
./nginx/conf.d/default.conf 만 고쳐서 php와 연동되게 하려 하였으나
아무리 이것저것 고쳐봐도 PHP 파일 소스 내용이 그대로 보이거나 (phpinfo.php 가 그대로 출력)
phpinfo.php파일이 그대로 다운로드 되는 현상이 나타났습니다.
무엇이 문제일까 이것저것 뒤져보며 왜 안될까 고민도 하고, 좌절도 하던 도중
결국 내가 뭔가를 잘못했기 때문에 안되는 것이다...하던 찰나..
결국 아래와 같이 ./nginx/conf.d/default.conf 의 php 설정이 문제였습니다.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root /var/www/html;(여기는 원래 다른 경로이나, document_root 변경했었음)
fastcgi_pass php:9000; <--------- 이부분이 문제였습니다
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;(여기도 변경했었음)
include fastcgi_params;
}
위에 화살표 쳐진 부분의 원래 설정값은 fastcgi_pass 172.0.0.1 :9000; 로 localhost의 9000번 포트를 통해서
php fastcgi를 처리하게 하는데, 저는 도커로 nginx와 php:fpm을 연결하여 실행하려고 하였기 때문에
nginx의 설정값을 172.0.0.1:9000 대신 docker-compose.yml에서 설정된 php:fpm의 컨테이너 이름인 php를 쓰고 9000번
포트를 가리키는 php:9000 을 써줘야 하는 것이었죠.
참 간단한데, 무작정 하려고 덤비면 답이 잘 안보이더라구요.
해결하려고 한참 찾아헤멨으나, 일단 해결 내용만 올려두려 합니다~2만