PHP 개발환경 구축

csm·2021년 8월 26일
0

develop

목록 보기
2/4

개요

급하게 php 복구 프로젝트를 진행하게되어 도커를 이용한 nginx -> php7 연동 이력이다.

작업내역

nginx docker

  • Dockerfile
FROM nginx:latest

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

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

# 백그라운드에서 실행
ENTRYPOINT ["nginx","-g","daemon off;"]
  • conf
server {
        listen 80;
        root /var/www/html/public;
        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 / {
            try_files $uri $uri/ /index.php?$query_string;
        }   

        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 /var/www/html/public$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
        }
}

php

  • Dockerfile
FROM php:7.4-fpm

WORKDIR /var/www/html
RUN apt-get update && apt-get install -y \
		libfreetype6-dev \
		libjpeg62-turbo-dev \
		libpng-dev \
	&& docker-php-ext-configure gd --with-freetype --with-jpeg \
	&& docker-php-ext-install -j$(nproc) gd
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN docker-php-ext-enable mysqli

docker-compose

version: "3.7"
services:
        app:
                container_name: php
                build:
                    context: ./php
                    dockerfile: Dockerfile
                ports:
                        - "9000:9000"
                volumes:
                        - ../dev:/var/www/html/public
                        # - ./conf/docker-php-ext-sodium.ini:/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
        web:
                container_name: nginx
                # 이미지 지정 - 직접 작성한 dockerfile을 실행하여 컨테이너 생성
                build:
                        context: ./nginx
                        dockerfile: Dockerfile
                depends_on:
                        - app
                volumes:
                        - ../dev:/var/www/html/public
                        - ./conf/nginx.conf:/etc/nginx/conf.d/default.conf
                ports:
                        - "80:80"
                        - "443:443"
                links:
                        - app
                restart: always
profile
개발자, 아키텍트

0개의 댓글