docker compose 로 php8 nginx 구성하기

2022. 3. 7. 15:45예전자료/시스템공부합시다

관련 레포 : https://github.com/saranf/docker_study/tree/main/nginx_php

docker compose 설치 (22.03.06 기준 최신 버전 2.3)

brew install docker-compose 

docker composer 설치 되었는지 확인

docker composer --version

docker 작업 폴더 생성

mkdir docker 
(현 위치 : /Users/mac/Project/docker) 

nginx 설정 파일 작성

mkdir nginx/conf.d
vim /Users/mac/Project/docker/nginx/conf.d/default.conf
server {
        listen 80;   ## 연결 포트 80 
        root /var/www/html;  ## nginx가 바라보는 root 디렉토리 (Document root) 
        index index.html index.htm index.php; ## main 페이지 (php사용할거라서 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;
        }
}

php 코드 작성

mkdir -p nginx/html
vim /Users/mac/Project/docker/nginx/html/index.php
<?php
echo 'test';
?>

dockerfile 작성

vim /Users/mac/Project/docker/nginx/dockerfile
#nginx 최신 버전 이미지 사용
FROM nginx:latest

# nginx 설정 파일을 Docker 내부로 복사
COPY ./conf.d/default.conf /etc/nginx/conf.d/default.conf

# Docker Host로 포트 번호 노출
EXPOSE 80

# 백그라운드에서 실행
ENTRYPOINT ["nginx","-g","daemon off;"]

docker-compose.yml 작성

vi /Users/mac/Project/docker/docker-compose.yml
ersion: "3.7"
services:
        app:
                container_name: php
                image: php_test:0.1
                ports:
                        - "9000:9000"
                volumes:
                        - ./nginx/html:/var/www/html
        web:
                container_name: nginx
                build:
                        context: ./nginx
                        dockerfile: dockerfile
                depends_on:
                        - app
                volumes:
                        - ./nginx/html:/var/www/html
                        - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
                ports:
                        - "8888:8888"
                        - "443:443"
                links:
                        - app
                restart: always

php8.1 docker file clone

https://github.com/docker-library/php.git

clone 위치 : 
    /Users/mac/Project/docker

php8.1 dockerfile build

cd php/8.1/alpine3.15/fpm
docker build -t php_test:0.1 . 

docker-compose container 올리기

docker-compose up -d

제대로 올라왓는지 확인

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
eb815376df5f   docker_web     "nginx -g 'daemon of…"   7 minutes ago   Up 7 minutes   0.0.0.0:443->443/tcp, 80/tcp, 0.0.0.0:8888->8888/tcp   nginx
780aa46bc6e1   php_test:0.1   "docker-php-entrypoi…"   7 minutes ago   Up 7 minutes   0.0.0.0:9000->9000/tcp