php-fpm 세팅
1) php 소스 파일
// php7.4/src/index.php
<?php
echo "php-fpm";
?>
// php7.4/src/test_php.php
<?php
echo "test php-fpm";
?>
2) 도커 파일
FROM php:7.4-fpm
COPY src/ /var/www/html/
EXPOSE 9000
ENTRYPOINT ["docker-php-entrypoint", "php-fpm"]
nginx 세팅
1) nginx 설정 파일
# nginx/default.conf
server {
listen 80;
root /var/www/html;
index index.html index.htm index.php;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
2) php 소스 파일
// nginx/src/index.php
<?php
echo "nginx";
?>
// nginx/src/test_nginx.php
<?php
echo "test nginx";
?>
3) 도커 파일
FROM nginx:latest
COPY default.conf /etc/nginx/conf.d/default.conf
COPY src/ /var/www/html/
EXPOSE 80
ENTRYPOINT ["nginx","-g","daemon off;"]
빌드 및 실행
# 호스트이름으로 통신하기 위한 bridge 네트워크 생성
$ docker network create internal
# php-fpm 빌드
$ cd ~/php7.4
$ docker build -t php:1 .
# nginx 빌드
$ cd ~/nginx
$ docker build -t nginx:1 .
# 실행
$ docker run --network internal --name php -d -it -p 9000:9000 php:1
$ docker run --network internal --name nginx -d -it -p 80:80 nginx:1
curl 127.0.0.1/index.php
php-fpm
curl 127.0.0.1/test_php.php
404 Not Found ... nginx/1.23.1
curl 127.0.0.1/test_nginx.php
File not found.